我正在尝试从一个文件夹中检索几个文本文件。之后,我尝试读取目录中的所有文件,然后在每个文件的顶部附加一个空白行。
但是,一旦我运行程序,它就不会执行我想要的。这是代码:
import os
folderPath = "./textFiles"
def myFilesAddEmptyLine():
for file in os.listdir(folderPath):
if file.endswith(".txt"):
with open(file, "r+") as myFile:
# print(myFile)
# ^ This returns "<_io.TextIOWrapper name='test.txt' mode='r+' encoding='cp1252'>" in the console.
fileContent = myFile.read()
myFile.seek(0, 0)
myFile.write("\n" + fileContent)
myFilesAddEmptyLine()
另一方面,如果我直接读取文件而没有尝试使用 os 来自动执行该过程,那么它将执行我试图完美实现的目标。因此,以下代码打开文件,并在文件顶部添加空白行。
def myFilesAddEmptyLine():
with open("test.txt", "r+") as myFile:
fileContent = myFile.read()
myFile.seek(0, 0)
myFile.write("\n" + fileContent)
myFilesAddEmptyLine()
有人可以概述一下第一段代码的问题吗?预先感谢!
答案 0 :(得分:1)
@asylumax用户在评论中指出:
import os
folderPath = "./textFiles"
def myFilesAddEmptyLine():
for file in os.listdir(folderPath):
if file.endswith(".txt"):
with open(file, "r+") as myFile:
fileContent = myFile.read()
myFile.seek(0, 0)
myFile.write("\n" + fileContent)
myFilesAddEmptyLine()
需要更改为此:
import os
folderPath = "./textFiles"
def myFilesAddEmptyLine():
for file in os.listdir(folderPath):
if file.endswith(".txt"):
with open(os.path.join(folderPath, file), "r+") as myFile: #This is the line that needed changing.
fileContent = myFile.read()
myFile.seek(0, 0)
myFile.write("\n" + fileContent)
print(myFile)
myFilesAddEmptyLine()