0

txt ファイルを操作する必要があり、そのために次のコードを使用しました。

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

ただし、別のプログラムで使用可能な python スクリプトを実行するために特定のアプリケーションでこの行を実行すると、このエラーが発生します。Spyder で実行してもエラーは発生しません。

TypeError: an integer is required

このエラーが発生する理由はわかりません....

編集:問題の行までのコード行

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
4

1 に答える 1

3

とともに

from os import *

osを含むグローバル名前空間のすべてのものをインポートしていますos.open()。これをしないでください。

2 番目の引数flagsは、1 文字の string を指定している間、整数定数として定義されますr。これは基本的にDSMがあなたに伝えていたことであり、Lattywareが言ったことです。

open()デフォルトでPythonに含まれているグローバル名前空間は、明らかに期待していたものとは異なります。

注:この関数は、低レベルの I/O を対象としています。通常の使用法では、組み込み関数 open() を使用します。この関数は、read() および write() メソッド (およびその他多数) を含む「ファイル オブジェクト」を返します。ファイル記述子を「ファイル オブジェクト」にラップするには、fdopen() を使用します。

于 2013-05-06T16:50:29.717 に答える