2017-02-09 54 views
1

我在Win 7 Pro SP1上使用Python 2.7。讀寫txt文件錯誤 - 'str'對象沒有屬性'name',波蘭語中的辯證字符錯誤

我嘗試代碼:

import os 
path = "E:/data/keyword" 
os.chdir(path) 

files = os.listdir(path) 
query = "{keyword} AND NOT(" 
result = open("query.txt", "w") 

for file in files: 
    if file.endswith(".txt"): 
     file_path = file.name 
     dane = open(file_path, "r") 
     query.append(dane) 
     result.append(" OR ") 

result.write(query) 
result.write(")") 
result.close() 

我得到錯誤:

file_path = file.name AttributeError: 'str' object has no attribute 'name'

我想不通爲什麼。

我有secon錯誤,當路徑與波蘭語辯證字符如「ąęłńóżć」。我得到錯誤:

path = "E:/Bieżące projekty/keyword" 

我試圖修復它:

path =u"E:/Bieżące projekty/keyword" 

,但它不能幫助。我從Python開始,我找不到爲什麼這個代碼不工作。

我想

  1. 查找目錄中的所有文本文件的內容。
  2. 加入名爲 「query.txt」

FX在一個文件中的文本的所有文本文件。

文件1 DATA1 DATA2

文件2個 數據3點的數據4

從 「query.txt」 輸出: DATA1 DATA2數據3點的數據4

回答

0

以上代碼工作正常時路徑變量沒有光澤的辯證字符。當我改變路徑,我得到錯誤:

SyntaXError: Non-ASCII character '\xc5' in file query.py on line 9, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 

Python的文檔PEP263我覺得魔術的報價。波蘭語郎編碼字符,如「ąęłńóźż」標準是ISO-8859-2。所以我嘗試添加編碼到代碼。我嘗試使用UTF-8,我也遇到了同樣的錯誤。我的所有代碼是(不含5條第一線與評論什麼樣的代碼做):

import os 
#path = r"E:/data" 
# -*- coding: iso-8859-2 -*- 
path = r"E:/Bieżące przedsięwzięcia" 
os.chdir(path) 

files = os.listdir(path) 
query = "{keyword} AND NOT(" 

for file in files: 
    if file.endswith(".txt"): 
     dane = open(file, "r") 
     text = dane.read() 
     query += text 
     print(query) 
     dane.close() 
     query.join(" OR ") 
result = open("query.txt", "w") 
result.write(query) 
result.write(")") 
result.close() 

有關Unicode/UTF-8字符here我發現,波蘭語字符「Z」的UTF-8編碼爲「\ XC5 \命苦」。將#標記爲帶有「ż」作爲註釋的路徑的編碼行也會出錯。當我刪除此字符代碼行:

path = r"E:/Bieżące przedsięwzięcia" 

工作正常,我得到了我想要的結果。

對於編輯,我使用Notepad ++默認的設置。我只在Python代碼選項卡中設置了四個空格替換。

*

第二個問題

我試圖找到在Python文檔在什麼[R是否意味着變量路徑。我無法在Python 2.7字符串文檔中找到它。有人能告訴我如何將這部分Python(如u,r之前的字符串值)命名爲fx。

路徑= ü 「somedata」

路徑= [R 「somedata」?

我會讓文檔閱讀它。

相關問題