将 os.walk 的输出写入 *.txt 文件
Write the output of os.walk into *.txt file
我绝对是 python 的新手。我想将每个文件写入 files.txt 文件中的文件夹(python 脚本所在的文件夹)。当我 运行 脚本仅使用 for 循环时,一切正常,我看到文件夹中的每个文件。当我插入 file() 函数以将其写入文件时,我只得到文本文件中的最后一个文件夹。 mz问题出在哪里?
def dir_list():
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
print(name)
dir_list()
工作正常并打印文件。
现在有了文件():
def dir_list():
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
file = open("files.txt", "w")
file.write(name + "\n")
file.close()
dirlist()
希望你能帮助我。
谢谢
在您的情况下,您将覆盖每个条目的文件。尝试
以下:
def dir_list():
with open("files.txt", "a") as fp:
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
fp.write(name + "\n")
dirlist()
发生这种情况是因为您每次执行循环时都会重新打开文件,并且由于您是在写入模式下打开文件(通过将“w”作为打开函数的参数传递),所以之前的内容文件被覆盖,最后只保存上次迭代写入的内容。
要解决这个问题,您应该在进入循环之前只打开文件一次:
def dir_list():
with open("files.txt", "a") as fp:
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
fp.write(name + "\n")
dirlist()
def dir_list():
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
file = open("files.txt", "a+")
print(name + "\n",file=file)
file.close()
dirlist()
希望这会奏效,这是打印 for 循环的所有输出的一种非常简单的方法。
这里的“a+”意味着你要追加输出
了解我它在您的 python 环境中是否有效
我绝对是 python 的新手。我想将每个文件写入 files.txt 文件中的文件夹(python 脚本所在的文件夹)。当我 运行 脚本仅使用 for 循环时,一切正常,我看到文件夹中的每个文件。当我插入 file() 函数以将其写入文件时,我只得到文本文件中的最后一个文件夹。 mz问题出在哪里?
def dir_list():
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
print(name)
dir_list()
工作正常并打印文件。
现在有了文件():
def dir_list():
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
file = open("files.txt", "w")
file.write(name + "\n")
file.close()
dirlist()
希望你能帮助我。 谢谢
在您的情况下,您将覆盖每个条目的文件。尝试 以下:
def dir_list():
with open("files.txt", "a") as fp:
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
fp.write(name + "\n")
dirlist()
发生这种情况是因为您每次执行循环时都会重新打开文件,并且由于您是在写入模式下打开文件(通过将“w”作为打开函数的参数传递),所以之前的内容文件被覆盖,最后只保存上次迭代写入的内容。
要解决这个问题,您应该在进入循环之前只打开文件一次:
def dir_list():
with open("files.txt", "a") as fp:
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
fp.write(name + "\n")
dirlist()
def dir_list():
for root, dirs, files in os.walk(".", topdown=False):
for name in dirs:
file = open("files.txt", "a+")
print(name + "\n",file=file)
file.close()
dirlist()
希望这会奏效,这是打印 for 循环的所有输出的一种非常简单的方法。
这里的“a+”意味着你要追加输出
了解我它在您的 python 环境中是否有效