簡體   English   中英

用Python讀寫文件

[英]Reading and Writing files in Python

我正在編寫一個有兩個輸入的腳本:

  1. 包含名稱列表的文件,
  2. 一個不同的文件(可以是空的或非空的)

該腳本的目的是從第一個文件中獲取名稱,訪問某個API並獲取每個名稱的信息,然后將該信息寫入第二個文件。 如果第二個文件已包含信息,則腳本將讀取寫入文件的最后一行,在第一個文件中找到該條目,然后從該條目開始。 然而,當涉及到讀取和寫入第二個文件時,我遇到了麻煩。

當我將第二個文件類型設置為“r +”然后在file_two.read()上進行打印時,它會顯示第二個文件的內容。 當我在下一行進行另一次打印時,它會將文件顯示為空。 同樣,當我將文件類型設置為“a +”時,它會將文件顯示為完全為空兩次,即使我可以清楚地看到文本文件中的信息確實存在。 有誰知道發生了什么?

這是處理寫作的代碼段:

def write_to_file(filename, users):
    pages = range(0, len(users) - 100, 100)
    for page in pages:
        user_names = get_users(users[page: page+100])
        lines = [format_user(user) for user in user_names]
        output_text = '\n'.join(lines)
        with filename as output_file:
            output_file.write(output_text.encode('utf-8'))

這是調用上述函數的代碼段。

file_one = args.file1
file_two = args.file2
users = read_names_automatic(file_one)
write_to_file(file_two, users)

當我將第二個文件類型設置為“r +”然后在file_two.read()上進行打印時,它會顯示第二個文件的內容。 當我在下一行進行另一次打印時,它會將文件顯示為空。

是的,這是預期的行為。 文件指針指向file_two.read()末尾的文件末尾,因此任何進一步讀取的嘗試都會返回一個空字符串。 例如,請查看以下內容:

with open("test.txt") as f:
    print f.readline() # => prints the first line, sets file pointer to second line
    print f.read() # => prints everything from the second line on

要將文件指針重置為文件的開頭:

with open("test.txt") as f:
    print f.read() # => prints entire file, sets file pointer to end of file
    f.seek(0) # => reset file pointer to beginning of file
    print f.read() # => prints entire file

同樣,當我將文件類型設置為“a +”時,它會將文件顯示為完全為空兩次,即使我可以清楚地看到文本文件中的信息確實存在。

當你open("test.txt", "a+") ,文件指針被設置為文件的末尾,因此任何讀取的嘗試都將產生一個空字符串。 實際上,這是允許您附加到文件的內容。 如果你file_two.seek(0)然后file_two.write() ,寫入的文本將被添加到file_two的開頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM