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请看这个