我想读取文件夹中的多个文本文件。我使用os.listdir()来获取我的文件夹中的每个文件。我正在使用open来读取文本文件并写入以写入文件。但是,当我运行代码时出现错误。 在这里,我附上了代码。
import os
infilename = os.listdir("C:\Python27\input")
for filename in infilename:
f = open(filename, "r")
data = f.read()
f.close()
答案 0 :(得分:2)
除非您的python脚本位于同一目录中,否则您将收到此错误。
您需要引用文件的完整路径,而不仅仅是文件名。
import os
indir = "C:\Python27\input"
for filename in os.listdir(indir):
fullpath = os.path.join(indir,filename)
with open(fullpath, "r") as f:
data = f.read()
答案 1 :(得分:0)
这里的问题是os.listdir
只返回该目录中的文件,只返回名称。您必须在文件名前面添加路径才能工作。
import os
import sys
drive = os.path.splitdrive(sys.executable)[0]
drive = os.path.join(drive, "Python27")
drive = os.path.join(drive, "input")
infilename = os.listdir(drive)
for filename in infilename:
f = open(os.path.join(drive, filename), "r")
data = f.read()
f.close()
答案 2 :(得分:0)
os.listdir
将仅返回文件名,您需要将文件名与目录名组合,以便open
找到它:
import os
infilename = os.listdir(r'C:\Python27\input')
for filename in infilename:
f = open(os.path.join(r'C:\Python27\input', filename), 'r')
data = f.read()
f.close()
如果您在字符串中使用\
,则应使用原始字符串,因此\n
等字符按字面意思采用而不会被解释;字符串开头的r'
将其标记为原始字符串(因此Python从字面上理解)。
答案 3 :(得分:0)
import os
path = "C:\\Python27\\input"
infilename = os.listdir(path)
for filename in infilename:
print(path + "\\"+ filename)
f = open(path + "\\" + filename, "r")
data = f.read()
f.close()