从文本文件中读取文件路径并修改它们

时间:2012-04-22 12:19:17

标签: python filenames

我有一个包含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 ..)的内容被删除,即,他们内部不会有单行文本!我对这种行为感到困惑,无法找到解决方案。

1 个答案:

答案 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模块执行某些操作 我失踪的黑暗魔法。)