如何使用python编辑目录中所有文本文件的行
我想用python编辑并替换目录中所有.txt文件的行。为此,我使用以下代码:如何使用python编辑目录中所有文本文件的行,python,text-files,ioerror,Python,Text Files,Ioerror,我想用python编辑并替换目录中所有.txt文件的行。为此,我使用以下代码: path = '.../dbfiles' for filename in os.listdir(path): for i in os.listdir(path): if i.endswith(".txt"): with open(i, 'r') as f_in: for line in f_in: line=tweet_to_words(
path = '.../dbfiles'
for filename in os.listdir(path):
for i in os.listdir(path):
if i.endswith(".txt"):
with open(i, 'r') as f_in:
for line in f_in:
line=tweet_to_words(line).encode('utf-8')
open(i, 'w').write(line)
其中tweet\u to_words(line)
是文本文件编辑行的预定义函数。
虽然我不确定代码的逻辑是否正确!?我还面临以下错误:
IOError:[Errno 2]没有这样的文件或目录:“thirdweek.txt”
但是目录中存在'thirdweek.txt'!
所以我的问题是看我在文件中编辑行的方法是否正确!?如果是,我如何修复错误?在使用
打开时,应该添加基本路径:
with open(path + '/' + i, 'r') as f_in:
这同样适用于:
open(path + '/' + i, 'w').write(line)
使用open
时,应添加基本路径:
with open(path + '/' + i, 'r') as f_in:
这同样适用于:
open(path + '/' + i, 'w').write(line)
glob模块可用于获取具有类似结尾的文件:
import glob
print glob.glob("*.txt") # Returns a list of all .txt files, with path info
for item in glob.glob("*.txt"):
temp = [] # Might be useful to use a temp list before overwriting your file
with open(item, "r") as f:
for line in f:
print line # Do something useful here
temp.append(line)
with open(item, "w") as f:
f.writelines(temp)
glob模块可用于获取具有类似结尾的文件:
import glob
print glob.glob("*.txt") # Returns a list of all .txt files, with path info
for item in glob.glob("*.txt"):
temp = [] # Might be useful to use a temp list before overwriting your file
with open(item, "r") as f:
for line in f:
print line # Do something useful here
temp.append(line)
with open(item, "w") as f:
f.writelines(temp)
虽然sting串联可以工作,但使用起来更安全(更方便)。虽然sting串联可以工作,但使用起来更安全(更方便)。如果文件不是很大(超过1MB),我建议先读取content=f.readlines()的文件,然后对每个元素应用tweet\u to\u字。然后再次打开文件进行写入,并写回转换后的行(f.write(“.join(content)),您需要提供正确的路径,如Ohad的回答所示。您需要不同的逻辑来编辑文件。当前,您的.write
调用将清除文件的所有现有内容。按照traianus的建议去做,或者更简单一点,创建一个包含编辑数据的新文件。如果文件不是很大(超过1MB),我建议先读取content=f.readlines()的文件,然后对每个元素应用tweet\u to\u单词。然后再次打开文件进行写入,并写回转换后的行(f.write(“.join(content)),您需要提供正确的路径,如Ohad的回答所示。您需要不同的逻辑来编辑文件。当前,您的.write
调用将清除文件的所有现有内容。按照traianus的建议执行操作,或者更简单地创建一个包含已编辑数据的新文件。