Как я могу записать в текстовый файл моего вывода с помощью Python? - PullRequest
0 голосов
/ 25 сентября 2018

Итак, я отсканировал свою папку, затем распечатал ее в свой текстовый файл, но я не знаю, почему он дает мне только 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()

мой единственный вывод в моем текстефайл:

fe8c341de79168a1254154f4e4403857c6e79c46

, который должен быть:

ed64498d29f40ccc07c7fbfa2a0a05e29763f5e2 ed66e83ae790873fd92fef146a2b70e5597792ee ef2f8d90ebae12c015ffea41252d5e25055b16c6 f4b8b762feb426de46a0d19b86f31173e0e77c2e f4d0cc44a8018c807b9b1865ce2dd70f027d2ceb f6c9b393b5148e45138f724cebf5b1e2fd8d9bc7 fa2229ef95b9e45e881ac27004c2a90f6c6e0947 fac66887402b4ac4a39696f3f8830a6ec34585be fcbbfeb67cd2902de545fb159b0eed7343aeb502 fe5babc1e4f11e205457f2ec616f117fd4f4e326 fe8c341de79168a1254154f4e4403857c6e79c46

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Ваш цикл 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)
0 голосов
/ 25 сентября 2018

Попробуйте, это немного лучше, он использует меньше памяти, и вам не нужно создавать список или загружать все содержимое файла в вашей функции:

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')

автоматически закроет файл.

0 голосов
/ 25 сентября 2018

Почему только имя последнего файла записывается в файл результатов?

Поскольку каждое значение x печатается в функции out_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' - символ новой строки.Это подтверждает, что каждое имя файла находится на новой строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...