2012-02-15 249 views
6
  1. 如何檢查文件是否存在?
  2. 如何將文本附加到文件?

我知道如何創建該文件,但在這種情況下,它會覆蓋所有的數據:在Python中追加文本到文件

import io 

with open('text.txt', 'w', encoding='utf-8') as file: 
    file.write('text!') 

*nix我可以這樣做:

#!/bin/sh 

if [ -f text.txt ] 
    #If the file exists - append text 
    then echo 'text' >> text.txt; 

    #If the file doesn't exist - create it 
    else echo 'text' > text.txt; 
fi; 
+1

'開放( '的text.txt', 'A',編碼= 'UTF-8')' – kev 2012-02-15 16:52:52

+1

這似乎是Python的3.x的,因爲你使用'encoding'參數爲'open()'。對? – 2012-02-15 16:54:02

+0

我用搜索,找不到答案! – tomas 2012-02-15 17:03:33

回答

15

使用模式a代替要添加到文件的w

with open('text.txt', 'a', encoding='utf-8') as file: 
    file.write('Spam and eggs!') 
+0

謝謝,我找不到關鍵'-a'。請告訴,如何檢查文件是否存在? – tomas 2012-02-15 17:01:52

+1

你爲什麼要檢查它是否存在?只有當它不存在時,你才追加它,這是沒有意義的? – geoffspear 2012-02-15 17:18:27

+0

@Wooble,只是想知道如何去做。 * nix的解決方案之一:'如果os.path.exists(文件名):' – tomas 2012-02-15 18:10:31

0

至於你的第一個問題,谷歌搜索會出現幾種方法。試試這個早期SO問題:

Pythonic way to test if a file exists?

+2

SO答案應該是自包含的,因此在答案中提供鏈接頁面中最重要的信息 - 請參閱[如何回答] (http://stackoverflow.com/questions/how-to-answer)瞭解詳情。 – 2012-02-15 17:07:03

+0

有沒有辦法檢查沒有'os'的文件(我需要win/nux平臺)? – tomas 2012-02-15 17:09:26

+0

只要可能,'os'模塊便攜。 'os.path.isfile()'包含 – alexis 2012-02-15 18:23:03