2 回答

TA貢獻1796條經驗 獲得超10個贊
這是因為列表理解
matching = [sales for sales in employee_file if "Salesman" in sales]
將指針設置為文件末尾,因此沒有任何內容可打印。如果再次打開文件并打印,它將打印所有內容。
在執行打印功能之前,我是否需要定義一個新變量
employee_file2
并重新打開“employees.txt”文件
你當然可以并且會起作用。您還可以將file_name.seek(0)
指針移回起始位置,以便再次打印整個文件。

TA貢獻1829條經驗 獲得超4個贊
Python 使用指針來跟蹤它在文件中的位置。當您迭代文件的所有行時,就像在列表理解中一樣,指針將指向文件的末尾。然后,根據文檔:
如果已到達文件末尾, f.read() 將返回空字符串 ( '')。
>>> f.read()
'This is the entire file.\n'
>>> f.read()
''
相反,從文件中獲取所有數據作為列表,然后對其進行處理,而不是再次接觸該文件。
with open("employees.txt") as f:
? ? employees = f.read().splitlines()
salespeople = [e for e in employees if "Salesman" in e]
print(salespeople)
# -> ['Jim Salesman', 'Dwight Salesman']
print(employees)
# -> ['Jim Salesman', 'Dwight Salesman', 'Pam Receptionist', 'Michael Manager', 'Oscar Accountant']
順便說一句,最好的做法是使用with聲明。然后您就不需要手動關閉它等等。
添加回答
舉報