繁体   English   中英

使用时,Python将反斜杠加倍; 使用open(C:\\ directory_name)作为file_object(PyCharm IDE)

[英]Python doubling backslashes when using; with open(C:\directory_name) as file_object (PyCharm IDE)

当我使用(PyCharm IDE)时:

with open("C:\file_path\target_file") as path_object:

它总是使驱动器反斜杠加倍。

我尝试使用原始字符串输入路径,结果相同;

file_path = r"C:\file_path\target_file"

我尝试过pathlib / Path,结果相同;

from pathlib import Path

file_path = Path("C:\file_path\target_file")

第二个反斜杠如预期的那样出现,但是无论如何,驱动器反斜杠总是加倍。 打印文件路径时,控制台会正确显示路径。

我也尝试转义反斜杠(\\),但它不起作用。 搜索路径时,它会打印为两倍。

您需要区分字符串的内容和REPL显示的内容。 例如:

>>> '''I am a multiline
... string
... '''
'I am a multiline\nstring\n'
>>> print('I am a multiline\nstring\n')
I am a multiline
string

>>>

即使其中一个包含文字换行符,而另一个包含换行文字( \\n ),两者也表示完全相同的字符串。 这是因为REPL在打印出来之前会调用repr(your_string)以便该字符串适合一行。

在您的情况下, \\f\\t实际上是错误:

>>> print("C:\file_path\target_file")
C:
  ile_path  arget_file

这是因为\\t代表制表符, \\f代表换页,就像\\n代表换行符一样。 实际上,双反斜杠是正确的,因为您希望\\字面意思是反斜杠,而不是转义序列的开始:

>>> print("C:\\file_path\\target_file")
C:\file_path\target_file

使用原始字符串具有相同的效果:

>>> print(r"C:\file_path\target_file")
C:\file_path\target_file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM