1

我在 Win 7 Pro SP1 上使用 Python 2.7。

我尝试代码:

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' 对象没有属性 'name'

我想不通为什么。

当路径使用波兰辩证字符(如“ąęłńóżć”)时,我有第二个错误。我收到以下错误:

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

我尝试将其修复为:

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

但这无济于事。我从 Python 开始,但我不知道为什么这段代码不起作用。

我想要的是

  1. 查找目录中的所有文本文件。
  2. 将所有文本文件加入一个名为“query.txt”的文件中

外汇。

文件 1 数据 1 数据 2

文件 2 数据 3 数据 4

“query.txt”的输出:data1 data2 data 3 data 4

4

1 回答 1

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 doc 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 字符我发现波兰字符“ż”在 UTF-8 中编码为“\xc5\xbc”。将 # 标记为带有“ż”的路径的编码行作为注释也会出错。当我使用此字符代码删除行时:

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

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

对于编辑,我使用带有默认设置的 Notepad++。我只在 python 代码选项卡中设置了四个空格替换。

*

第二个问题

我尝试在 Python 文档中的变量路径中找到r的含义。我在 Python 2.7 字符串文档中找不到它。有人能告诉我 Python 的这一部分(如字符串值之前的 u、r)是如何命名的 fx.

路径=“一些数据”

路径 = r “一些数据”?

我会让医生阅读它。

于 2017-02-11T07:04:22.407 回答