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