0

私はPythonにかなり慣れていないので、次のことをしようとしています:

  • ユーザー定義ディレクトリ内 (1000 画像)
  • ファイル名を見つける (完了)
  • ファイルサイズを調べる (完了)
  • 配列に格納
  • 配列をテキスト ファイルに保存する

from Tkinter import Tk from tkFileDialog import askdirectory from array import * import os Tk().withdraw() fileDir = askdirectory() print(fileDir) dirList=os.listdir(fileDir) for fname in dirList: print fname print os.path.getsize(fileDir+"/"+fname)

4

4 に答える 4

0
#!/usr/bin/env python
import csv
import os
from Tkinter import Tk
from os.path import join, getsize
from tkFileDialog import askdirectory

# get directory path
root = Tk()
root.withdraw()
dirpath = askdirectory()
root.destroy()

# save filename, file size entries for the directory in csv format
entries = ((fn, getsize(join(dirpath, fn))) for fn in os.listdir(dirpath))
with open('entries.csv', 'wb') as file:
    csv.writer(file).writerows(entries)
于 2012-10-02T08:28:03.247 に答える
0

以下の実装に関する注意事項:

  • コンマや引用符などの特殊な csv 文字を適切に処理するため、通常は常にcsv ライブラリを使用します。このエスケープを手で行うと、非常に面倒になる可能性があります。
  • / のようなパス区切り文字をハードコーディングしない方がよいでしょう。上記の 2 つの回答は Windows マシンでは機能しません。os.path.joinを使用すると、コードはすべてのプラットフォームで正しく実行されます。

コード:

from tkFileDialog import askdirectory
from glob import glob
from os import listdir
from os.path import join, getsize
import csv

CSV_FILE = 'listing.csv'

path = askdirectory()
files = listdir(path)
rows = [(i, getsize(join(path, i))) for i in files]
with open(CSV_FILE, 'wb') as f:
    writer = csv.writer(f)
    writer.writerows(rows)
于 2012-10-02T08:24:54.300 に答える
0

ファイル名とサイズをタプルに格納してテキスト ファイルに書き込むには、次のようにします。

from Tkinter import Tk
from tkFileDialog import askdirectory
from array import *
import os

Tk().withdraw()
fileDir = askdirectory()
print(fileDir)
dirList = os.listdir(fileDir)
data = ((fname, str(os.path.getsize(fileDir + "/" + fname)))  for fname in dirList)

outputFile = open('myoutputfile.csv', 'w')
for entry in data:
    outputFile.write(','.join(entry) + '\n')

outputFile.close()

私のpythonインストールディレクトリでこれを実行すると、次のようなファイルが得られます。

DLLs,4096
Doc,0
include,32768
Lib,65536
libs,4096
LICENSE.txt,40080
NEWS.txt,285115
python.exe,27136
pythonw.exe,27648
README.txt,54967
Scripts,0
tcl,4096
Tools,4096

Excelで.csvファイルとして開くことができるはずのものは問題ありません。ファイル名にコンマや改行などが含まれている場合は、ファイル名を引用する必要がある場合があることに注意してください。

より重いものにはcsv モジュールがありますが、そのような単純なファイルにはやり過ぎだと思います。使用に興味がある場合は、次のようになります。

import csv
with open('myoutputfile.csv', 'wb') as outputFile:
    csvwriter = csv.writer(outputFile, dialect='excel')
    for entry in data:
        csvwriter.writerow(entry)
于 2012-10-02T07:26:42.010 に答える
0

あなたはおそらく次のようなことをしたいと思うでしょう:

#!/usr/bin/env python
import csv, os

OUT = 'files_and_sizes.csv'
DIR = '<some directory>'

def main():
    writer = csv.writer(open(OUT, 'w'))
    for f in os.listdir(DIR):
        if os.path.isfile(DIR+ '/' + f):
            writer.writerow([f, os.path.getsize(DIR + '/' + f)])

if __name__ == '__main__':
    main()

CSV と Excel は相性が良いので、インポートに問題はありません。

于 2012-10-02T07:37:49.557 に答える