Python 循环浏览目录和干净的文件

Python 循环浏览目录和干净的文件,python,valueerror,Python,Valueerror,我正在尝试循环浏览目录。目标是打开目录ff,并对文件进行修改。为什么打开(ff,'r')不工作 文件d.txt每行都有数字和符号x,1,“。我想从每行中删除这些字符 导入操作系统 filenames=os.listdir(“.”) 对于文件名中的文件名: ff=os.path.join(r'C:\Users\V\Documents\f\e\e\data',文件名'd.txt') f=open(str(ff),'r')#此行不打开文件 a=['x','1','“'] lst=[] 对于f中的行:

我正在尝试循环浏览目录。目标是打开目录
ff
,并对文件进行修改。为什么
打开(ff,'r')
不工作

文件
d.txt
每行都有数字和符号
x
1
。我想从每行中删除这些字符

导入操作系统
filenames=os.listdir(“.”)
对于文件名中的文件名:
ff=os.path.join(r'C:\Users\V\Documents\f\e\e\data',文件名'd.txt')
f=open(str(ff),'r')#此行不打开文件
a=['x','1','“']
lst=[]
对于f中的行:
对于a中的单词:
如果单词对齐:
行=行。替换(单词“”)
lst.append(行)
f、 关闭()
我得到的错误是:

for line in f:
    ValueError: I/O operation on closed file.

首先,我认为这部分代码是错误的:

    for filename in filenames:
        ff = os.path.join(r'C:\Users\V\Documents\f\e\e\data', filename, 'd.txt')
因为这将把最后一个文件名分配给
ff
。所以我将下面的代码移到这个for循环下。现在它将为所有文件运行

我相信这个代码应该是有效的:

导入操作系统
filenames=os.listdir('.'))
lst=[]
a=['x','1','“']
对于文件名中的文件名:
ff=os.path.join(r'C:\Users\V\Documents\f\e\e\data',文件名'd.txt')
打开(ff,'r')作为文件:
对于文件中的行:
对于a中的单词:
如果单词对齐:
行=行。替换(单词“”)
lst.append(行)
打开(ff,'w')作为文件:
对于lst中的线:
file.write(行)

编辑:如果
open('ff','r')
行不起作用,那么您给出的路径可能是错误的。
文件名的内容是什么?为什么要在末尾添加
d.txt
,请编辑您的帖子并添加这些详细信息。

移动
f.close()
到循环外部。每次循环运行时,您都会关闭文件

import os

filenames= os.listdir (".")
for filename in filenames:
    ff = os.path.join(r'C:\Users\V\Documents\f\e\e\data', filename, 'd.txt')

f = open(str(ff),'r')  #this line does not open the file
a = ['x','1','"']
lst = []
for line in f:
    for word in a:
        if word in line:
            line = line.replace(word,'')
            lst.append(line)

f.close()

什么是
文件夹
?我们看到的代码中没有产生该异常。这里没有I/O操作。我相信您正在执行文件打开范围之外的写入操作,因此I/O错误。不使用\n您需要使用\\您使用
f.close()关闭文件
的第一次迭代中,如果文件中有多个单词,它将在下一次迭代中尝试写入一个关闭的文件。您必须将该行移出循环。是的,此代码可以工作,它会在目录中循环,但不知怎的“'未删除数量标记。请参见:文件需要关闭。如果没有,他们正在被毁灭。最后一个文件中的行将保存在不同文件夹的文件中。但开放式(ff)是有效的。所以也许这是一个不同的例子question@Green请看这个