我正在编写一个程序来读取5个文件中的文本行,并将这5个文件中的文本编译成相应的列表。
但是我在让程序实际读取文本到列表方面遇到了很多麻烦,到目前为止我的代码是:
from random import random
from dice import choose
b = open ('E:\Videos, TV etc\Python\ca2\beginning.txt', 'r'). readlines ()
stripped_b = [item.strip() for item in b]
a = open ('E:\Videos, TV etc\Python\ca2\adjective.txt', 'r'). readlines ()
stripped_a = [item.strip() for item in a]
i = open ('E:\Videos, TV etc\Python\ca2\inflate.txt', 'r'). readlines ()
stripped_i = [item.strip() for item in i]
n = open ('E:\Videos, TV etc\Python\ca2\noun.txt', 'r'). readlines ()
stripped_n = [item.strip() for item in n]
phrase = []
turn = 0
def business_phrase(x):
x = raw_input("\n\nInsert a number of business phrases to generate: ")
while turn <= x:
turn += 1
for item in stripped_b:
random_word = choose(item)
phrase.append(random_word)
for item in stripped_a:
random_word = choose(item)
phrase.append(random_word)
for item in stripped_i:
random_word = choose(item)
phrase.append(random_word)
for item in stripped_n:
random_word = choose(item)
phrase.append(random_word)
print random_list
business_phrase(x)的
开头,形容词,膨胀和名词是文本文件,骰子是包含选择功能的python文件。
我运行此程序尝试生成一个短语,我收到以下错误消息:
IOError: [Errno 22] invalid mode ('r') or filename 'E:\\Videos, Tv etc\\Python\\ca2\\x08eginning.txt'
我不知道为什么它不会读取文本文件,因为它们与所述的目录相同(实际上与包含该函数的程序在同一目录中)。
有没有人有任何想法我完全被难倒。
答案 0 :(得分:8)
处理Windows路径名时,请始终使用原始字符串文字:
r'E:\Videos, TV etc\Python\ca2\beginning.txt'
因为否则反斜杠可能会被解释为启动转义序列。
另外,请注意字符串末尾的反斜杠:r'C:\'
不是您认为的那样。
答案 1 :(得分:3)
'\'用于Python字符串中的转义。 Here's a list of what you can do with them。你想逃避反斜杠实际上让它们作为后退读取,这意味着使用其中两个。这样做:
'E:\\Videos, TV etc\\Python\\ca2\\adjective.txt'
答案 2 :(得分:2)
不,你可能不有一个带有^ H的文件名。逃避你的反斜杠。
'...\\...'