2017-07-20 38 views
1

我正在使用python中的numpy數組。我想打印數組及其屬性到一個txt輸出。我希望文本輸出以空行結束。我怎樣才能做到這一點?在文件的末尾寫入新行

我曾嘗試:

# Create a text document of the output 
with open("demo_numpy.txt","w") as text: 
    text.write('\n'.join(map(str, [a,shape,size,itemsize,ndim,dtype])) + '\n') 

而且也:

# Create a text document of the output 
with open("demo_numpy.txt","w") as text: 
    text.write('\n'.join(map(str, [a,shape,size,itemsize,ndim,dtype]))) 
    text.write('\n') 

然而,當我打開GitHub上桌面的文件,我仍然得到指示該文件的最後一行是「 dtype「

+0

在適當的編輯器中打開你的文件,你會看到文件末尾有一個新行(除非你的GitHub處理程序在提交它之前不自動刪除尾隨空白)。 – zwer

+0

謝謝,@zwer我查了一下,我相信GitHub刪除了尾部的空白,這就是爲什麼我不能看到換行符,但我相信它在那裏。問題是 - 我怎樣才能在正確的文本編輯器中看到空行? – zsad512

+1

通常,編輯器的光標將能夠移動到新行,並且如果它支持顯示行號 - 它也會顯示新行的行號。 – zwer

回答

0

這是使用Python 3.x打印函數解決的,該函數會在每個打印語句的末尾自動插入新行。

下面是代碼:

with open("demo_numpy.txt","w") as text:  
    print(a, file = text) 
    text.close() 
  • 注意 - 顯然是比較合適的字符串值打交道時,而不是二進制文件使用print功能,而不是.write
2

當你做"\n".join(...)你會得到一個如下形式的字符串:

abc\ndef\nghi\nhjk 

- 換句話說,它不會以\n結束。

如果您的代碼寫入另一個\n那麼你的字符串將是形式

abc\ndef\nghi\nhjk\n 

,但不把一個空行,在文件的結尾,因爲TEXTFILES應該有在\n結尾的行。這就是Posix標準所說的。

所以你需要另一\n讓你的文件的最後兩行是

hjk\n 
\n 

,如果你問它來讀取一個文本,其中最終尾隨\n缺少Python會不會窒息。但它也不會將文本文件中的單個尾隨\n視爲空行。我不知道GitHub也這麼做。

+0

因此我在我的問題中發佈的第一條代碼行不正確?我是否需要添加另一個'\ n'?我認爲第一個代碼實際上起作用,它只是一個刪除尾部空白的GitHub問題。 – zsad512

+0

我認爲你的代碼的兩個版本都做同樣的事情。兩個版本都會寫入一個文件,以單個'\ n'結尾。根據Posix規則,這不是,指定一個空白行,因爲尾部的'\ n'終止最後一行。你需要第二個'\ n'來終止你想要的空行。我拒絕相信GitHub刪除尾隨空白。你不需要聽我的話。只需放入另一個'\ n'並嘗試。這會比我寫這個要花費更少的擊鍵。 – BoarGules