0

我有一个包含 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..)的内容会被抹去,也就是说,它们里面不会有一行文本!我对这种行为感到困惑,无法找到解决方案。

4

1 回答 1

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模块做了一些我错过的黑魔法。)

于 2012-04-22T12:44:06.713 回答