2016-03-23 33 views
-5

使用Python寫入文件時出現奇怪的問題。下面是代碼:使用來自函數的數據寫入文件的Python

t = func() 
print t 
f = open('data_t.dat', 'w') 
for i in t: 
    f.write('%d\n' % (i)) 
f.close() 

我沒趕上從功能異常,但可以打印出來的「T」的值如下:

[51535, 96382, 95788, 95293, 94996, 95491, 95392, 96085] 

但不能生成的文件。運行代碼後沒有名爲「data_t.dat」的文件。然而,如果我直接使用這樣的數據,這個文件可以生成:

t = [51535, 96382, 95788, 95293, 94996, 95491, 95392, 96085] 
f = open('data_t.dat', 'w') 
for i in t: 
    f.write('%d\n' % (i)) 
f.close() 

我試過了另一種方式。在這種情況下,文件不能生成:

t = func() 
t = [51535, 96382, 95788, 95293, 94996, 95491, 95392, 96085] 
f = open('data_t.dat', 'w') 
for i in t: 
    f.write('%d\n' % (i)) 
f.close() 

我不明白問題是什麼。任何建議都是值得歡迎的。謝謝!後續操作:正如Adam Smith指出的那樣,目錄已經在func()中改變了。這就是它發生的原因。謝謝你的幫助。

+6

「該文件無法生成」是什麼意思?你有例外嗎?文件是否已創建,但是爲空? – chepner

+2

你確定你的代碼沒有得到任何異常,並離開'func()'?在你的第一個例子中,它打印出「t」嗎? – Lafexlos

+0

「文件無法生成」,我的意思是文件「data_t.dat」不存在。運行代碼後,不會寫入任何文件。 – user1794396

回答

3

我有理由確信func有類似下面的代碼:

def func(): 
    os.chdir("somewhere else") 
    f = open("somefile.txt") 
    # generate data from somefile.txt 
    f.close() 
    return some_data 

os.chdir改變你的全局狀態,所以新的相對路徑具有"somewhere else"爲根,而不是目錄你正在運行的腳本在最簡單的解決方法是不是做的事:

def func(): 
    f = open("full/qualified/path/to/somefile.txt") 
    ... 
+3

而「一天的心靈」獎頒發給... –

+0

@TimPietzcker哦,它早了...... –

+0

是的,這正是問題所在。謝謝! – user1794396

-1

此問題的第一個原因是 t = func() 後的代碼沒有達到,b因爲有些東西打斷了它的完成。由於我沒有看到func()身體,我不知道它爲什麼失敗的原因

+0

代碼實際上已經達到了,儘管這也是我的第一個結論。看到我的答案(有點預知)的解決方案。 –