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

时间:2013-03-31 06:43:58

标签: python csv for-loop

我是python的新手,但我已经在Stack Overflow,google和CodeAcademy上搜索了我明显非常简单的问题的答案或灵感。我想找到一个简单的例子,其中使用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)?感谢。

4 个答案:

答案 0 :(得分:2)

虽然对于这项任务你不需要,但我会尽可能利用标准库模块,如csv。试试这样的事情,

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

答案 1 :(得分:0)

我可能会改变这个:

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 list,然后在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))

答案 2 :(得分:0)

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

a构建器中的file打开要附加的文件,您可以阅读有关使用file对象here的不同模式的更多信息。

答案 3 :(得分:0)

试试这个:

# 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部分中,
我们导入模块oscsv第2部分中,
我们声明image_path

现在for循环..
第3部分中,
我们声明一个空列表(li) 然后我们进入for循环,在其中我们使用每个项目填充列表,并在image_path中填充长度。 在第4部分中,
我们开始编写csv文件。在with语句中,我们将li中的所有数据写入了我们的文件。