2013-05-06 4 views
0

я должен работать с текстовым файлом и сделать, что я использовал следующий код:Ошибка при открытии текстового файла в Python

inputFile = open("C:/Abaqus_JOBS/Job-M1-3_4.inp", "r") #CAE INPUT FILE 

Однако я получаю эту ошибку, когда я запустил эту строку в конкретном приложении для запуск сценариев python, доступных в другой программе. Я не ошибаюсь, когда запускал его в Spyder.

TypeError: an integer is required 

Я понятия не имею, почему возникает эта ошибка ....

EDIT: строки кода до линии в вопросе

import os 
from os import * 
from abaqus import * 
from odbAccess import * 
from abaqusConstants import * 
import time 
import itertools 

os.chdir('C:\\Abaqus_JOBS') 

LCKf = 'C:\\Abaqus_JOBS\\Job-M1-3_2.lck' 
STAf = 'C:\\Abaqus_JOBS\\Job-M1-3_2.sta' 

def get_num_part(s): 
    for i in xrange(len(s)): 
     if s[i:].isdigit(): 
      return s[i:] 
    return '' 

if not path.exists(LCKf): 
    time.sleep(1) 
while path.exists(LCKf) and path.isfile(LCKf) and access(LCKf, R_OK): 
    variableX = 0 
else: 
    odb = openOdb(path='Job-M1-3_2.odb') 
#get CF 
#session.odbs[name].steps[name].frames[i].FieldOutput 
    myAssembly = odb.rootAssembly  
    myAssemblyName = odb.rootAssembly.name 

    nsteps=len(odb.steps.values()) 

    step1 = odb.steps.values()[nsteps-1] 
    step1Name = odb.steps.values()[nsteps-1].name 

    myInstanceName = odb.rootAssembly.instances.values()[0].name 

    dCF3=[] 
    dCF3v=[] 
    coordFv=[] 
    fileData = [] #array with the input file 
    nodes = [] #array with the content of *NODES 

    inputFile = open("C:/Abaqus_JOBS/Job-M1-3_4.inp", "r") #CAE INPUT FILE 
    #fileData = variable with all the lines of the inp file 
    for line in inputFile: 
     fileData.append([x.strip() for x in line.split(',')]) 

ошибка является:

Traceback (most recent call last): 
    File "c:/Abaqus_JOBS/results.py", line 47, in <module> 
    inputFile = open("C:/Abaqus_JOBS/Job-M1-3_4.inp", "r") #CAE INPUT FILE 
TypeError: an integer is required 
+2

Просьба предоставить полную трассировку стека и весь код, который вы запускали - очень вероятно, что ошибка не происходит в этой строке. (Как примечание, при открытии файлов лучше использовать [оператор 'with'] (http://www.youtube.com/watch?v=lRaKmobSXF4).) –

+2

Какое приложение? Очевидно, что эта ошибка не была создана CPython в строке, которую вы дали, поэтому важное значение имеет конкретное приложение. –

+2

Ты ничего не сделал, чтобы затмить встроенный открытый? – mgilson

ответ

3

С

from os import * 

Вы импортируете все материалы os в глобальное пространство имен, включая os.open(). Не делай этого.

Второй аргумент flags, определяется как целочисленные константы, в то время как вы предоставляете односимвольную строку r. Это в основном то, что DSM was telling you и что Lattyware said.

open() включен в Python по умолчанию в глобальном пространстве имен, которые вы ожидали, по-видимому, отличается:

Примечание: Эта функция предназначена для низкого уровня I/O. Для нормального использования использует встроенную функцию open(), которая возвращает «файл-объект» с методами read() и write() (и многие другие). Чтобы обернуть дескриптор файла в «файл-объект», используйте fdopen().

Смежные вопросы