Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python将输出写入txt文件?_Python_File - Fatal编程技术网

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

如何使用python将输出写入txt文件?,python,file,Python,File,所以我扫描了我的文件夹,然后把它打印到我的文本文件中,但我不知道为什么它只给我一个输出,而这个输出是最后一个文件名 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.t

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

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
这必须是:

ED64498D29F40CC07C7FBFA2A05E29763F5E2
ED66E83AE790873FD92FEF146A2B70E559792EE
ef2f8d90ebae12c015ffea41252d5e25055b16c6
f4b8b762feb426de46a0d19b86f31173e0e77c2e
f4d0cc44a8018c807b9b1865ce2dd70f027d2ceb
f6c9b393b5148e45138f724cebf5b1e2fd8d9bc7
fa2229ef95b9e45e881ac27004c2a90f6c6e0947
FAC6687402B4AC4A39696F3F8830A6EC34585BE
fcbbfeb67cd2902de545fb159b0eed7343aeb502
fe5babc1e4f11e205457f2ec616f117fd4f4e326
fe8c341de79168a1254154f4e4403857c6e79c46

为什么只将最后一个文件的名称写入结果文件? 因为当
x
的每个值都在
out\u fun
函数中打印时,实际上只返回最后一个值。你需要把其他的东西放在某个地方,然后把它们还给你的朋友

如何返回所有内容? 创建一个名为
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”
是新行字符。这使得舒尔的每个文件名都在一个新行上。

为什么只将最后一个文件的名称写入结果文件? 因为当
x
的每个值都在
out\u fun
函数中打印时,实际上只返回最后一个值。你需要把其他的东西放在某个地方,然后把它们还给你的朋友

如何返回所有内容? 创建一个名为
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”
是新行字符。这使得舒尔的每个文件名都在一个新的行上。

您的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)

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)

尝试此方法会更好一些,它使用更少的内存,您不需要在函数中创建列表或加载所有文件内容:

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 open("result_vsdt.txt","w") as file:
    for line in out_fun():
        file.write(line + '\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 open("result_vsdt.txt","w") as file:
    for line in out_fun():
        file.write(line + '\n')

它将自动关闭文件。

您在os.listdir上迭代,每次都将result写入x,但只返回函数out\u fun()中的最后一个x。您应该收集列表中的所有x,然后加入它。您只返回
out\u fun
中的最后一个
x
值(在
for
循环结束后)。尝试返回
os.listdir('C:\Users\Guest\Desktop\OJT\scanner\samples\u raw')
而不是
x
。您遍历os.listdir,每次都将result写入x,但只返回函数out\u fun()中的最后一个x。您应该收集列表中的所有x,然后加入它。您只返回
out\u fun
中的最后一个
x
值(在
for
循环结束后)。尝试返回
os.listdir('C:\Users\Guest\Desktop\OJT\scanner\samples\u raw')
而不是
x
。名称错误:名称“output”不正确defined@jeremydevera固定的这是一个打字错误。当我们有一大堆行的时候,
yield
非常重要。如果您觉得我的答案有帮助,请检查绿色的。NameError:名称“output”不正确defined@jeremydevera固定的这是一个打字错误。当我们有一大堆行的时候,
yield
非常重要。如果您觉得我的答案有帮助,请检查绿色的答案。UnboundLocalError:分配前引用的局部变量“输出”我已更新了我的答案,请您使用我提供的完整示例进行尝试。UnboundLocalError:分配前引用的局部变量“输出”我已更新了我的答案,你能用我提供的完整例子试试吗