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

时间:2018-09-25 10:09:21

标签: python file

所以我扫描了我的文件夹,然后将其打印到了我的文本文件中,但是我不知道为什么它只给我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

3 个答案:

答案 0 :(得分:2)

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

由于在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'是换行符。这样就可以确保每个文件名都在新行中。

答案 1 :(得分:2)

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

const express = require("express");
const router = express.Router();
const Condition = require("../models/Condition");
const Manufacturer = require("../models/Manufacturer");
const Material = require("../models/Material");
const Kind = require("../models/Kind");
const Type = require("../models/Type");
const db = require("../connection/databaseConn");

router.get("/categoriesLoad",(req,res)=>{

        let types = [];
        let kinds = [];
        let materials = [];
        let conditions = [];
        let manufacturers = [];

    //db.then(()=>{
        
        Type.find({},(err,t)=>{
            t.forEach(x=>types.push(x));
        });

        Kind.find({},(err,t)=>{
            t.forEach(x=>kinds.push(x));
        });

        Material.find({},(err,t)=>{
            t.forEach(x=>materials.push(x));
        });

        Condition.find({},(err,t)=>{
            t.forEach(x=>conditions.push(x));
        });

        Manufacturer.find({},(err,t)=>{
            t.forEach(x=>manufacturers.push(x));
        }).then(()=>{
            
            let add = req.session.addMessage;
    
            req.session.addMessage ="";
            
            res.render("adminArea",{types,kinds,materials,conditions,manufacturers,add});
        });
    
    //})
});

module.exports = router;

编辑:
最好在打开文件时使用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

它将自动关闭文件。

答案 2 :(得分:0)

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