';无效参数';错误和python不读取文件
我试图编写一段代码,在一个文本文件中取两个数字,然后将它们分开,将答案显示为一个重分数。当我在程序中输入自己的值时,我已经让分数部分工作,但我无法让程序识别文本文件。我曾尝试将它们放在同一个目录中,并将文件的完整系统路径放在同一个目录中,但到目前为止没有任何效果。现在我只是想把文件的内容打印出来';无效参数';错误和python不读取文件,python,file,Python,File,我试图编写一段代码,在一个文本文件中取两个数字,然后将它们分开,将答案显示为一个重分数。当我在程序中输入自己的值时,我已经让分数部分工作,但我无法让程序识别文本文件。我曾尝试将它们放在同一个目录中,并将文件的完整系统路径放在同一个目录中,但到目前为止没有任何效果。现在我只是想把文件的内容打印出来 with open('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.4\topheavy.txt','w') as f:
with open('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.4\topheavy.txt','w') as f:
for line in f:
for word in line.split():
print(word)
然后,我会将这两个值指定给x和y,但我得到以下错误:
Traceback (most recent call last):
File "C:\Python34\divider.py", line 2, in <module>
open('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.4\topheavy.txt','w')
OSError: [Errno 22] Invalid argument:'C:\\ProgramData\\Microsoft\\Windows\\Startmenu\\Programs\\Python 3.4\topheavy.txt'
回溯(最近一次呼叫最后一次):
文件“C:\Python34\divider.py”,第2行,在
打开('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.4\topheavy.txt','w')
OSError:[Errno 22]无效参数:'C:\\ProgramData\\Microsoft\\Windows\\Startmenu\\Programs\\Python 3.4\topheavy.txt'
感谢您的帮助。正如Python文档中所述,IOError异常会发生: 当I/O操作(如打印语句、内置 open()函数或文件对象的方法)对于与I/O相关的 原因,例如,“未找到文件”或“磁盘已满” 用“r”(读)而不是“w”(写)打开 这两行中的开始菜单是不同的??尝试使用正斜杠而不是反斜杠。Python会将正斜杠转换为运行它的操作系统的适当分隔符 打开('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.4\topheavy.txt','w')
OSError:[Errno 22]无效参数:“C:\ProgramData\Microsoft\Windows\Startmenu\Programs\Python 3.4\topheavy.txt”将文件路径中的每个
\
替换为\
两件事:
r'
表单来防止解释转义序列。例如,'C:\\ProgramFiles\\…'
或r'C:\ProgramFiles\…'
\\startmenus\\
。看起来,在“开始”和“菜单”之间缺少一个空格,尽管事实上,开放行似乎有正确的路径\topheavy.txt
可能也正在转换为opheavy.txt
。这就是为什么在回溯中它前面没有两个反斜杠。您使用的是一个“\”分隔符,它可能在某个地方被转义(例如,在接近尾端的地方)。这是Windows路径分隔符,但也用作字符串转义符
您可以将“\”加倍为“\”。然而,最简单的方法是在开头加上一个r以忽略
r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.4\topheavy.txt"
跳过使用/的建议,因为您不在Unix上,而且Python也没有理由不能适应Windows,只要您记住将“\”也作为转义。在开始时使用r还允许您将字符串复制/粘贴到另一个程序中,反之亦然
另外,在c:\temp或类似的环境中进行测试也不会有什么坏处,以避免您可能键入错误路径的问题
最后,但并非最不重要的一点是,如前所述,您需要在“r”读取模式下打开。您应该在路径的最后一个“/”中再添加一个“/”,例如:
open('C:\Python34\book.csv')打开('C:\Python34\\\book.csv')
在Python 3.5.4中尝试读取大文件时,我出现了相同的错误。为了解决此问题,我没有使用
.read()
将整个文件读入内存,而是逐行读取:
with open('big.txt') as f:
for i in f:
print(i)
我试过了,但还是犯了同样的错误。现在它在“OSError”之前是“r”而不是“w”。谢谢,double\\s适合我。
with open('big.txt') as f:
for i in f:
print(i)