Python 从for循环和列表写入.csv文件

Python 从for循环和列表写入.csv文件,python,csv,for-loop,Python,Csv,For Loop,我是python新手,但我已经在Stack Overflow、google和CodeAcademy上搜索了我的答案或灵感,这显然是一个非常简单的问题。我想找到一个简单的例子,其中使用for循环来保存每个交互很容易找到,但我要么错过了它,要么没有声音来提出正确的问题。所以,对于这个简单的问题,请不要在显示器前大声叹息。谢谢 我想简单地写一个csv文件,在下面的代码中,在一个单独的列中包含两个打印行的每次迭代。因此,输出示例可能如下所示: ################## andy.dat, 8

我是python新手,但我已经在Stack Overflow、google和CodeAcademy上搜索了我的答案或灵感,这显然是一个非常简单的问题。我想找到一个简单的例子,其中使用for循环来保存每个交互很容易找到,但我要么错过了它,要么没有声音来提出正确的问题。所以,对于这个简单的问题,请不要在显示器前大声叹息。谢谢

我想简单地写一个csv文件,在下面的代码中,在一个单独的列中包含两个打印行的每次迭代。因此,输出示例可能如下所示:

################## andy.dat, 8 brett.dat, 9 candice.dat, 11 #################
lines = list()

# Populate list
for filename in os.listdir(image_path):
    lines.append((filename, len(filename))

# Print list
for line in lines:
    print("%s, %d" % (line[0], line[1]))

# Or more simply
for line in lines:
    print("%s, %d" % line)
如果我试着去做

x =  filename

然后我只得到循环的最后一次迭代,写入x。如何使用for循环将它们全部写入x?另外,如何在csv中将其作为列写入,并在其旁边显示len(文件名)的打印结果?谢谢。

我可能会改变这个:

for filename in os.listdir (image_path):
    print filename
    print len(filename)
差不多

lines = list()

for filename in os.listdir(image_path):
    lines.append("%s, %d" % (filename, len(filename)))
我的版本创建了一个python,然后在for循环的每次迭代中,都向它添加一个条目

完成后,您可以使用以下内容打印行:

for line in lines:
    print(line)
或者,您可以首先在第一个循环中创建元组列表,然后在第二个循环中格式化输出。这种方法可能看起来像:

################## andy.dat, 8 brett.dat, 9 candice.dat, 11 #################
lines = list()

# Populate list
for filename in os.listdir(image_path):
    lines.append((filename, len(filename))

# Print list
for line in lines:
    print("%s, %d" % (line[0], line[1]))

# Or more simply
for line in lines:
    print("%s, %d" % line)
最后,您实际上不需要显式存储文件名长度,只需计算并动态显示即可。事实上,您甚至不需要创建一个列表并使用两个循环

您的代码可以简单到

import sys, os

image_path = "C:\\"
for filename in os.listdir(image_path):
    print("%s, %d" % (filename, len(filename))

file
构造函数中的
a
打开文件进行追加时,您可以阅读更多有关使用
file
对象的不同模式的信息。

尽管对于此任务,您不需要它,但我会尽可能利用标准库模块,如。试试这样的

import os
import csv

csvfile = open('outputFileName.csv', 'wb')
writer = csv.writer(csvfile)

for filename in os.listdir('/'): # or C:\\ if on Windows
    writer.writerow([filename, len(filename)])

csvfile.close()
试试这个:

# Part 1
import csv
import os

# Part 2
image_path = "C:\\"

# Part 3    
li = [] # empty list
for filename in os.listdir(image_path):
    li.append((filename, len(filename))) # populating the list

# Part 4
with open('test.csv', 'w') as f:
    f.truncate()
    writer = csv.writer(f)
    writer.writerows(li)
说明:
在第1部分中,
我们导入模块
os
csv

在第二部分中,
我们声明
image\u路径

现在的
循环..
在第三部分中,
我们声明一个空列表(
li
)。
然后我们进入一个for循环,在该循环中,我们用每个项目填充列表,并在
image\u path
中显示其长度。 在第4部分中,

我们开始编写csv文件。在声明中,我们将
li
中的所有数据写入了我们的文件。

您的代码无法工作!您的命名空间中没有
os.listdir
!!是否只列出文件?因为
os.listdir
列出文件和文件夹。。。