'无效的论点'错误和python没有读取文件

时间:2014-10-30 20:03:51

标签: python file

我正在尝试编写一个代码,该代码在文本文件中包含2个数字,然后将它们分开,将答案显示为最重要的部分。当我在程序中输入自己的值时,我已经得到了分数部分,但是我无法让程序识别文本文件。我已经尝试将它们放在同一目录中并放置文件的完整系统路径,但到目前为止还没有任何工作。现在我只是想要打印文件的内容。

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)      

然后我会将2个值分配给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'

感谢您的帮助。

8 个答案:

答案 0 :(得分:3)

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'

两件事:

  1. 使用包含反斜杠的路径时,您需要使用两个反斜杠,或使用r''表单来防止解释转义序列。例如,'C:\\Program Files\\...'r'C:\Program Files\...'
  2. 您的错误显示:\\Startmenu\\。看起来“开始”和“菜单”之间缺少一个空格,尽管开放线似乎有正确的路径。
  3. 注意:您路径中的\topheavy.txt可能也会转换为<tab>opheavy.txt。这就是为什么在追溯中它前面没有两个反斜杠。

答案 1 :(得分:0)

以“r”(读取)而不是“w”(写入)

打开

这两行中的startmenu是不同的?尝试使用向前而不是反斜杠。 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'

答案 2 :(得分:0)

将每个\替换为文件路径中的\\

答案 3 :(得分:0)

您正在使用&#34; \&#34;分隔符可能会在某处转移(例如,接近结尾。这是Windows路径分隔符,但也用作字符串转义。

你可以将&#34; \&#34;加倍as&#34; \&#34;。但最简单的方法是在开头添加一个r来忽略。

r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.4\topheavy.txt"

略过建议使用/代替,你不是在Unix上,并且没有理由Python不能适应Windows,只要你记得要注意&#34; \&#34;也是一种逃避。使用r&#39;在开始时还允许您将字符串复制/粘贴到另一个程序中,反之亦然。

另外,在c:\ temp或类似情况下进行测试也不会有什么问题,以避免出现错误输入路径的问题。

最后,但并非最不重要的,你需要打开&#34; r&#34;阅读模式,如前所述。

答案 4 :(得分:0)

您应该在路径的最后一个“/”中再添加一个“/”,例如:

open('C:\Python34\book.csv') to open('C:\Python34\\\book.csv')

Reference

答案 5 :(得分:0)

当尝试在Python 3.5.4中读取大文件时,出现了相同的错误。为了解决它,我没有用.read()将整个文件读入内存,而是逐行读取了每一行:

with open('big.txt') as f:
  for i in f:
    print(i)

答案 6 :(得分:0)

我的问题相当随意,是我正在使用 open(filename, "w").write(...) 编写文件,其中 filename 是无效的路径名或包含意外的斜杠。

例如,将 datetime.datetime.today() 转换为带有斜杠或冒号的日期字符串 (Windows) 并写入不存在的目录将导致此错误。

变化:

open("../backup/2021/08/03 15:02:61.json", "w").write(data)

致:

open("../backup/2021-08-03 15-02-61.json", "w").write(backup)

举个例子。

答案 7 :(得分:-1)

正如Python文档中所写,发生IOError异常:

  

当I / O操作(例如print语句,内置的)时引发   对于与I / O相关的问题,open()函数或文件对象的方法失败   原因,例如“找不到文件”或“磁盘已满”。