如何使用python编辑目录中所有文本文件的行

如何使用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(

我想用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(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的建议执行操作,或者更简单地创建一个包含已编辑数据的新文件。