2014-10-30 99 views
3

我在編寫代碼,需要在文本文件中輸入2個數字,然後將它們分開,並將答案顯示爲最重要的部分。當我在程序中輸入我自己的值時,我得到了分數部分,但我無法讓程序識別文本文件。我曾嘗試將它們放在同一目錄中,並放置文件的完整系統路徑,但目前爲止還沒有發揮作用。現在我只是想要打印文件的內容。'invalid argument'error and python not reading file

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' 

感謝您的幫助。

+0

感謝,雙\\對我的作品。 – 2018-01-01 16:36:10

回答

-1

就像在Python文檔寫的是IOError異常發生:

Raised when an I/O operation (such as a print statement, the built-in open() function or a method of a file object) fails for an I/O-related reason, e.g., 「file not found」 or 「disk full」.

0

打開方式 「R」(讀),而不是 「W」(寫入)

而且STARTMENU在這兩個線條不同?嘗試使用前進而不是反斜槓。 Python將正斜槓轉換爲適當的分隔符它在

開放運行的OS( 'C:\ ProgramData \微軟\的Windows \開始菜單\程序\的Python 3.4 \ topheavy.txt', 'W')

OSERROR:[錯誤22]無效的說法: 'C:\ ProgramData \微軟\的Windows \開始菜單\程序\的Python 3.4 \ topheavy.txt'

+0

我試過了,但得到了同樣的錯誤。現在它在'OSError'之前表示'r'而不是'w'。 – Sawyer 2014-10-30 20:09:54

0

更換每隔\\\文件路徑

2
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\\。看起來「開始」和「菜單」之間缺少空格,儘管開放線似乎有正確的路線。

注:,在你的路徑\topheavy.txt可能是越來越轉化爲<tab>opheavy.txt了。這就是爲什麼在追蹤中它前面沒有兩個反斜槓。

0

您正在使用的可能是取得了一些逃脫(如臨近年底是\噸「\」分隔符,這是Windows的路徑分隔符,同時也作爲一個字符串逃脫。

可以折起來「\」爲「\」。然而最容易就是前面加上一開始的R忽視。

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

跳過推薦使用/,而不是,你是不是在Unix和沒有理由Python不能適應Windows,只要你記得要注意「\」也是一種逃避。在開始時使用r'也允許你從字符串複製/粘貼到另一個程序中上午或反之亦然。

另外,在c:\ temp或類似的測試中也不會有什麼傷害,以避免可能錯誤輸入路徑的問題。

最後但並非最不重要的是,您需要以「r」讀取模式打開,如前所述。

0

你應該例如路徑添加一個 「/」,在最後一個 「/」:

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

Reference