繁体   English   中英

如何使用python写入输出的txt文件?

[英]How can I write to a txt file of my output using python?

所以我扫描了我的文件夹,然后将其打印到了我的文本文件中,但是我不知道为什么它只给我1个输出,而该输出是最后一个名称文件

import zipfile
import os

def out_fun():  
    for x in os.listdir('C:\Users\Guest\Desktop\OJT\scanner\samples_raw'):
        print x
    return x
output = out_fun()
file = open("result_vsdt.txt","w")
file.write(output)
file.close()

我在txt文件中的唯一输出是:

fe8c341de79168a1254154f4e4403857c6e79c46

必须是:

ed64498d29f40ccc07c7fbfa2a0a05e29763f5e2 ed66e83ae790873fd92fef146a2b70e5597792ee ef2f8d90ebae12c015ffea41252d5e25055b16c6 f4b8b762feb426de46a0d19b86f31173e0e77c2e f4d0cc44a8018c807b9b1865ce2dd70f027d2ceb f6c9b393b5148e45138f724cebf5b1e2fd8d9bc7 fa2229ef95b9e45e881ac27004c2a90f6c6e0947 fac66887402b4ac4a39696f3f8830a6ec34585be fcbbfeb67cd2902de545fb159b0eed7343aeb502 fe5babc1e4f11e205457f2ec616f117fd4f4e326 fe8c341de79168a1254154f4e4403857c6e79c46

为什么仅将最后一个文件的名称写入结果文件?

因为在out_fun函数中打印x每个值时,实际上仅返回最后一个值。 您需要将其他存储在某个地方,然后将其返回。

如何返回所有内容?

创建一个名为output的字符串,将x每个值附加到该字符串,然后返回:

import os

def out_fun():  
    output = ''
    for x in os.listdir('C:\Users\Guest\Desktop\OJT\scanner\samples_raw'):
        print x
        output += x + '\n'
    return output

with file = open("result_vsdt.txt","w"):
    file.write(out_fun())

'\\n'是换行符。 可以肯定的是,每个文件名都位于新行中。

尝试这样做会更好一点,它使用更少的内存,并且您无需创建列表或在函数中加载所有文件内容:

import zipfile
import os

def out_fun():  
    for x in os.listdir('C:\Users\Guest\Desktop\OJT\scanner\samples_raw'):
        yield x

file = open("result_vsdt.txt","w")
for line in out_fun():
    file.write(line + '\n')
file.close()

编辑:
这也是最好使用with打开文件时,是这样的:

with open("result_vsdt.txt","w") as file:
    for line in out_fun():
        file.write(line + '\n')

它将自动关闭文件。

您的for循环将遍历您的文件并以最后一个文件结束。 这意味着x永远是您的最后一个文件。 如果要返回所有文件,则需要创建一个列表,并将所有文件保存在那里,例如:

def out_fun():  
    array = [""]
    for x in os.listdir('C:\Users\Guest\Desktop\OJT\scanner\samples_raw'):
        array.append(x)
    return '\n'.join(array)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM