簡體   English   中英

無法在python上讀取文件

[英]Unable to read file on python

我正在嘗試使用以下代碼讀取文件,

f = open("test.txt", "r")
print(f.read()) 

test.txt保存在與下面路徑下的py文件相同的文件夾下,

C:\Users\Benjamin Chen\Desktop\Python Codes\python_env\env2\

使用上面的代碼,我收到以下錯誤消息,

(env2) PS C:\Users\Benjamin Chen\Desktop\Python Codes> cd 'c:\Users\Benjamin Chen\Desktop\Python Codes'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Users\Benjamin Chen\Desktop\Python Codes\python_env\env2\Scripts\python.exe' 'c:\Users\Benjamin Chen\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\ptvsd_launcher.py' '--default' '--client' 
'--host' 'localhost' '--port' '58754' 'c:\Users\Benjamin Chen\Desktop\Python Codes\python_env\env2\freecode17.py' 
Traceback (most recent call last):
  File "c:\Users\Benjamin Chen\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\ptvsd_launcher.py", line 43, in <module>
    main(ptvsdArgs)
  File "c:\Users\Benjamin Chen\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\lib\python\old_ptvsd\ptvsd\__main__.py", line 432, in main
    run()
  File "c:\Users\Benjamin Chen\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\lib\python\old_ptvsd\ptvsd\__main__.py", line 316, in run_file
    runpy.run_path(target, run_name='__main__')
  File "C:\Python\Python38\lib\runpy.py", line 263, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "C:\Python\Python38\lib\runpy.py", line 96, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "C:\Python\Python38\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "c:\Users\Benjamin Chen\Desktop\Python Codes\python_env\env2\freecode17.py", line 1, in <module>
    f = open("test.txt", "r")
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

我在網上做了一些搜索,發現我可能需要將文件路徑更改為絕對路徑,所以我嘗試了下面的代碼,

f = open("C:\Users\Benjamin Chen\Desktop\Python Codes\python_env\env2\test.txt", "r")
print(f.read()) 

並收到以下錯誤,

(env2) PS C:\Users\Benjamin Chen\Desktop\Python Codes> cd 'c:\Users\Benjamin Chen\Desktop\Python Codes'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Users\Benjamin Chen\Desktop\Python Codes\python_env\env2\Scripts\python.exe' 'c:\Users\Benjamin Chen\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\ptvsd_launcher.py' '--default' '--client' 
'--host' 'localhost' '--port' '58913' 'c:\Users\Benjamin Chen\Desktop\Python Codes\python_env\env2\freecode17.py' 
Traceback (most recent call last):
  File "c:\Users\Benjamin Chen\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\ptvsd_launcher.py", line 43, in <module>
    main(ptvsdArgs)
  File "c:\Users\Benjamin Chen\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\lib\python\old_ptvsd\ptvsd\__main__.py", line 432, in main
    run()
  File "c:\Users\Benjamin Chen\.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\lib\python\old_ptvsd\ptvsd\__main__.py", line 316, in run_file
    runpy.run_path(target, run_name='__main__')
  File "C:\Python\Python38\lib\runpy.py", line 262, in run_path
    code, fname = _get_code_from_file(run_name, path_name)
  File "C:\Python\Python38\lib\runpy.py", line 237, in _get_code_from_file
    code = compile(f.read(), fname, 'exec')
  File "c:\Users\Benjamin Chen\Desktop\Python Codes\python_env\env2\freecode17.py", line 1
    f = open("C:\Users\Benjamin Chen\Desktop\Python Codes\python_env\env2\test.txt", "r")
             ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

\\是轉義字符。 如果您想在字符串(路徑)中使用\\文字,則必須使用另一個\\對其進行轉義:

f = open("C:\\Users\\Benjamin Chen\\Desktop\\Python Codes\\python_env\\env2\\test.txt", "r")
# Here -----^------^--------------^--------^-------------^-----------^-----^

反斜杠用於轉義特殊字符,以指示解釋器以特定方式解釋緊隨其后的字符序列。 它是一種控制字符。 要在字符串中包含文字反斜杠,您必須對其進行轉義。 用雙反斜杠替換路徑中的所有反斜杠,你應該有一個修復。 有關詳細信息,請參閱 Wikipedia 條目轉義字符

此外,錯誤消息會准確地告訴您哪里出錯了。 它指出字符 2-3 很有趣。 路徑字符串中的字符 2 是反斜杠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM