2017-02-09 48 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”?

我会让文档阅读它。

相关问题