的Python 2.4 對於我的例子,我有一個2列csv文件獲得文件大小和附加到CSV的新列文件
如:
HOST, FILE
server1, /path/to/file1
server2, /path/to/file2
server3, /path/to/file3
我想獲得的文件大小對象在csv FILE中的每一行,然後將該值添加到新列上的csv FILE。 製作:
HOST, PATH, FILESIZE
server1, /path/to/file1, 6546542
server2, /path/to/file2, 46546343
server3, /path/to/file3, 87523
我試了幾種方法,但havnt有很多成功。
下面的代碼在PATH執行fileSizeCmd(DU-B)並正確輸出filezie,但我havnt想出如何利用這些數據來添加到CSV文件
import datetime
import csv
import os, time
from subprocess import Popen, PIPE, STDOUT
now = datetime.datetime.now()
fileSizeCmd = "du -b"
SP = " "
# Try to get disk size and append to another row after entry above
#st = os.stat(row[3])
#except IOError:
#print "failed to get information about", file
#else:
#print "file size:", st[ST_SIZE]
#print "file modified:", time.asctime(time.localtime(st[ST_MTIME]))
incsv = open('my_list.csv', 'rb')
try:
reader = csv.reader(incsv)
outcsv = open('results/results_' + now.strftime("%m-%d-%Y") + '.csv', 'wb')
try:
writer = csv.writer(outcsv)
for row in reader:
p = Popen(fileSizeCmd + SP + row[1], shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, empty = p.communicate()
print 'Command: %s\nOutput: %s\n' % (fileSizeCmd + SP + row[1], stdout)
# Results in bytes example
#
# Output:
# 8589935104 /path/to/file
#
# Write 8589935104 to new column of csv FILE
finally:
outcsv.close()
finally:
incsv.close()
尼斯代碼@miku – 2012-04-13 22:29:58
我似乎無法得到這與2.4工作。我想我已經改變了你的發言權,但我仍然沒有太多的運氣 – Tommy 2012-04-13 23:41:04
@miku我得到了這個工作。謝謝。如果文件不存在,它確實失敗,但是 – Tommy 2012-04-14 00:49:24