我有一个包含200多个文件路径的文本文件(filenames.txt):
/home/chethan/purpose1/script1.txt
/home/chethan/purpose2/script2.txt
/home/chethan/purpose3/script3.txt
/home/chethan/purpose4/script4.txt
在每个文件中出现的多行中,每一行都包含一行文件,如Reference.txt
。我的目标是在每个文件中用.txt
替换 Reference.txt 中的.csv
。作为Python的初学者,我在类似案例的stackoverflow中提到了几个问题,并编写了以下代码。
我的代码:
#! /usr/bin/python
#filename modify_hob.py
import fileinput
f = open('/home/chethan/filenames.txt', 'r')
for i in f.readlines():
for line in fileinput.FileInput(i.strip(),inplace=1):
line = line.replace("txt","csv"),
f.close()
f.close()
当我运行我的代码时,上面提到的txt文件(script1,script2 ..)的内容被删除,即,他们内部不会有单行文本!我对这种行为感到困惑,无法找到解决方案。
答案 0 :(得分:1)
这应该让你去(未经测试):
#! /usr/bin/python
#filename modify_hob.py
# Open the file with filenames list.
with open('filenames.txt') as list_f:
# Iterate over the lines, each line represents a file name.
for filename in list_f:
# Rewrite its content.
with open(filename) as f:
content = f.read()
with open(filename, 'w') as f:
f.write(content.replace('.txt', '.csv'))
在下面的代码中,f
设置为filename.txt
的打开文件对象
没有其他的。这就是你在最后两行中关闭的内容。
另外,你没有把任何东西写回文件,所以你不能指望你的
更改要写回磁盘。 (除非fileinput
模块执行某些操作
我失踪的黑暗魔法。)