2

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

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

##################
安迪.dat, 8

布雷特.dat,9

坎迪斯.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

4 回答 4

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()
于 2013-03-31T07:01:16.527 回答
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))
于 2013-03-31T06:48:00.853 回答
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)))

在构造函数afile打开文件进行追加的位置,您可以在此处file阅读有关可以使用对象的不同模式的更多信息。

于 2013-03-31T06:56:19.437 回答
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写入我们的文件中。

于 2013-03-31T07:18:43.783 回答