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

2024-04-20 06:44:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还不熟悉,但我已经在Stack Overflow、google和codearcademy上搜索了一个答案或灵感来解决我显然非常简单的问题。我认为找到一个简单的例子,其中一个for循环用于保存每个迭代将很容易找到,但我要么错过了它,要么没有声乐提出正确的问题。所以,对于这个简单的问题,请不要在班长面前大声叹息。谢谢。

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

##################
andy.dat, 8

brett.dat, 9

candice.dat, 11         
#################

我目前掌握的代码是:

import sys
import os.path

image_path = "C:\\"

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

如果我试着去做

x =  filename

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


Tags: csvpath代码imageimportforlenstack
3条回答

我可能会改变这个:

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)

或者,可以在第一个循环中创建元组列表,然后在第二个循环中格式化输出。这种方法可能看起来像:

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))
import sys
import os

image_path = "C:\\"
output = file("output.csv", "a")

for filename in os.listdir (image_path):
    ouput.write("%s,%d" % (filename, len(filename)))

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

尽管对于这个任务,您不需要它,但如果可以的话,我会利用标准库模块,比如^{}。试试这样的东西

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

相关问题 更多 >