2

私はPythonを初めて使用しますが、明らかに非常に単純な問題の答えやインスピレーションを求めて、スタックオーバーフロー、グーグル、およびCodeAcademyを検索しました。for ループを使用してすべての反復を保存する簡単な例を見つけるのは簡単だと思いましたが、それを見逃したか、適切な質問をする語彙がありません。ですから、この簡単な質問に対して、モニターの前で大声でため息をつかないでください。ありがとう。

以下のコードの 2 つの印刷行をそれぞれ別の列に繰り返して csv ファイルを単純に書きたいと思います。出力例は次のようになります。

##################
アンディ・ダット、8

brett.dat、9

キャンディス・ダット、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 に書き込むにはどうすればよいですか? また、横に len(filename) の出力結果を含む csv の列として書き込む方法を教えてください。ありがとう。

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)

または、最初のループで最初にタプルのリストを作成し、次に 2 番目のループで出力をフォーマットすることもできます。このアプローチは次のようになります。

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)

最後に、ファイル名の長さを明示的に保存する必要はありません。計算してその場で表示することができます。実際、リストを作成して 2 つのループを使用する必要 さえありません

あなたのコードは次のように単純かもしれません

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

これを試して:

# 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
では、モジュールと をインポートします。パート 2 では、 を宣言します。
oscsv

image_path

今度はforループ..パート 3
では、 空のリスト ( ) を宣言します。 次に、for ループに入り、リストにすべてのアイテムと長さを入力します。パート 4では、 csv ファイルの書き込みに移ります。withステートメントでは、からのすべてのデータをファイルに書き込みました。
li
image_path
li

于 2013-03-31T07:18:43.783 に答える