2015-08-26 42 views
0

我是新來的Python和這在我的第一個腳本。我渴望得到它的工作,並希望尋求一些支持,幫助我闖入語言。設置保存文件目錄和數組

我的腳本下面保存了一個url數據到csv,接下來我想要做的事情是。

  1. 在本地機器上指定要保存的文件夾,所以我不需要py。文件在同一個目錄中。爲了參數的緣故,我說我不想保存到c:\ myfiles,並且他們的.py文件位於同一臺機器上的任何其他位置。

  2. 我想了解如何在python中構建一個變量數組,並通過我的ASXCode變量循環。首先讓我們說我有CSL.ax和BHP.ax作爲元素。最終,我想從外部資源(如txt文件或SQL表)傳遞此信息,但現在爲了幫助我學習,我對此腳本中的靜態數組感到滿意(嬰兒步驟)。我假設我需要一個For循環或類似的代碼遍歷元素。

我沒有要求任何人爲我做這一切,方法/功能和程序流程的線索將是偉大的幫助我工作的解決方案。

感謝,

Bassmann

import csv 
import os 
import urllib.request, urllib.parse, urllib.error 

ASXCode = 'CSL' 
local_filename = "Intra_" + ASXCode + ".csv" 
url = ('http://chartapi.finance.yahoo.com/instrument/1.0/' + ASXCode + 
     '.ax/chartdata;type=quote;range=15d/csv') 

temp_filename, headers = urllib.request.urlretrieve(url) 

with open(temp_filename, 'r', newline='') as inf, \ 
    open(local_filename, 'w', newline='') as outf: 
    reader = csv.reader(inf) 
    writer = csv.writer(outf) 
    for _ in range(32): # skip first 32 rows 
     next(reader) 
    writer.writerows(reader) # copy the rest 

os.remove(temp_filename) # clean up 
print('{} downloaded'.format(local_filename)) 
+0

你試過'local_filename =「c:\ myfiles \ foobar.csv」'將文件保存在另一個文件夾中?對於第二個問題,我不明白你不可能達到什麼目的。你能更精確嗎? – Patrick

+0

嗨帕特里克,提前致謝。 local_filename =「c:\ myFiles \ CSL.csv」,但是當我使用local_filename =「c:\ myFiles \」+ ASXCode +「.csv」時,在掃描字符串文字時出現錯誤EOL。如果我在c:\ myfiles結尾處取出\,它會將我的文件保存到c:\並將myfile添加到文件名。我必須錯過簡單的東西。感謝Bassmann – bassmann

+0

對於我的第二部分,我想爲這個變量設置ASXCode。例如ASXCode =('CSL,'BHP'),之後循環ASXCode中每個元素的其餘代碼。也許我正在用其他語言來思考,不確定如何在Python中正確處理它。 – bassmann

回答

0

如果要執行的ASXCode的不同值相同的代碼,你可以做這樣的事情:

ASXCodes = ('CSL', 'XXX', 'YYY') 
for ASXCode in ASXCodes: 
    local_filename = "c:\\myfiles\\foobar\\" + ASXCode + ".csv" 
    print("Saving to {}".format(local_filename)) 
    with open(local_filename, 'w', newline='') as outf: 
     ... 
print("done") 
+0

嗨,帕特里克,當你解決方案彈出時,我只想用for循環到達那裏。 for循環中只有1件事情,這個假設我想讓我的所有代碼循環。但是如果讓我們說有10行代碼,並且我希望循環前5個,那麼運行剩餘的非循環,就像在第5行之後放置'else'一樣簡單?我有這個權利嗎? – bassmann

+0

Python將循環縮進比'for'更多的所有內容。如果你想在循環之外使用一些代碼,就不要縮進它。我編輯了我的答案。 – Patrick