2015-12-14 26 views
0

我有一個沒有函數的python腳本。目前,它需要在輸入file1.txt並從計算結果輸出一個字符串,即在CSV文件中寫入行的函數?或解析列表?

file1.txt 12 16.0 True 

我想通過幾十個文本文件按行運行,這些字符串寫入到一個CSV文件,行。

是否將每個輸出附加到列表中,然後解析列表?這感覺就像你應該寫一個函數來獲取每個輸入並將計算結果直接輸出到一個CSV文件中。

我該如何從每次運行腳本時取得輸入,例如文件名,數據結果,數據結果2,布爾結果,並將其寫入文件使用 csv.writer.writerow()

import csv 
import sys 

f = open(sys.argv[1], 'wt') 
try: 
    writer = csv.writer(f) 
    writer.writerow(('Filename', 'data', 'data', 'Boolean') 
    writer.writerow(% (f, ..., ..., str(...)) 
finally: 
    f.close() 

print open(sys.argv[1], 'rt').read() 
+2

我不確定你的問題是什麼。看來你或多或少知道如何繼續?我建議你編寫代碼的第一個版本,如果遇到任何特定問題,請提出一個新問題,如果不是,則可以訪問http://codereview.stackexchange.com/以獲得體系結構和樣式建議 – njzk2

回答

1

你可以從sys.argv中獲得的參數列表

arg_list = sys.argv[1:] 

,然後創建一個循環創建後作家

f = open(sys.argv[1], 'wt') arg_list = sys.argv[1:] 
    try: 
     writer = csv.writer(f) 
     writer.writerow(('Filename', 'data', 'data', 'Boolean') 
     for arg in arg_list: 
      writer.writerow(% (f, ..., ..., str(...)) # your row 
    finally: 
     f.close() 

    print open(sys.argv[1], 'rt').read() 

同時,如果你需要一個單獨的行寫csv,code'll是

f = open(sys.argv[1], 'wt') 
try: 
    writer = csv.writer(f) 
    writer.writerow(('Filename', 'data', 'data', 'Boolean') 
    writer.writerow(sys.argv[2], sys.argv[3], sys.argv[4]) 
finally: 
    f.close() 

print open(sys.argv[1], 'rt').read() 
0

我的評論沒有足夠的知名度。只是想澄清,如果你是從一個文件夾讀取。如果是的話,爲什麼不運行循環並將結果存儲到數據框/列表中,然後將其寫入csv。讓我知道這種方法是否適用於您,我可以編寫代碼。

0

我懷疑你的意思是調用已存在的Python scr從另一個腳本的ipt,抓住它的結果並將它們推送到您的CSV。

其實,你應該考慮重寫你的第一個Python腳本和包裹它的功能,這需要文件名作爲參數,並返回各自的結果的函數:

def do_stuff(thefile): 
    # Perform activity here 
    return (a, b, c) 

然後遍歷的文本文件(或使用map)並收集結果。

如果你真的要堅持從另一個調用一個腳本(三思而後行!),這絕對不是你應該做的,你可以在subprocess.call()os.system()進一步閱讀的內容。我不會在這裏舉一個例子來不支持這種方法。

+0

不,我希望重寫第二個Python腳本。 – ShanZhengYang