我看了很多关于这个的文章,但是找不到正确的答案:
我对python有点陌生。我在python中打开一个文件,在开始行之前插入一行,在最后一行之前插入一行,然后在结束处将所有行重新构造成一个字符串变量。你知道吗
下面是我试图在打开的文件上运行的函数。这会将mode=“0”处的所有行更改为mode=“1”,反之亦然。你知道吗
def Modes(file, mode):
endstring = ''
if(mode == 1):
mode0 = 'mode="0"'
mode1 = 'mode="1"'
else:
mode0 = 'mode="1"'
mode1 = 'mode="0"'
for line in iter(file):
if 'Modes' in line:
line = line.replace(mode0,mode1)
endstring += line
return endstring
所以我尝试以下方法:
mode = 1
input_file = open("c:\myfile.txt")
input_file.readlines()
lengthlines = len(input_file)
#insert line at position 1
input_file.insert(1,'<VARIABLE name="init1" />')
#insert line at last line position - 1
input_file.insert(lengthlines,'<VARIABLE name="init2" />')
#join the lines back up again
input_file = "".join(input_file)
#run the modes function - to replace all occurrences of mode=x
finalfile = Modes(input_file,mode)
print finalfile
然后我得到一个错误,“文件类型的对象,没有”len()“和一般对象/列表错误。你知道吗
似乎我把物品/清单等搞混了,但我不知道在哪里-如果有任何帮助我会很感激-干杯
input_file.readlines()
返回内容,但不将其分配给输入文件。 您必须将调用的返回值赋给一个变量,如下所示:然后把它传给len()
编辑:使用len()解决问题会导致更多的异常。 这应该大致满足您的要求:
如果要使用几行代码,可能必须在函数中更改字符串串联。你知道吗
但这还不会将新内容写回文件。你知道吗
EDIT2:当你处理完这个文件时,关闭它总是一个很好的做法,因此我更新了上面的内容,使用一个上下文管理器来处理这个问题。也可以在完成后显式调用
input_file.close()
。你知道吗相关问题 更多 >
编程相关推荐