【问题标题】:Write a Python directory path string that contains both single and double back slash?编写一个包含单反斜杠和双反斜杠的 Python 目录路径字符串?
【发布时间】:2019-11-02 04:01:20
【问题描述】:

我知道 python 打印包含反斜杠的字符串与它实际的方式不同。我不关心打印语句,但我只希望字符串以两个反斜杠开头,所有其他斜杠都是这样的一个斜杠:

\\xyz\abc\fish\orange

目前,这是我编写的代码,但出现以下错误:

import shutil

dir_path = r"\\xyz\abc\fish\orange"
print(dir_path)
shutil.copyfile("U:/Profile/Downloads/document1", dir_path)

我收到一个错误:

FileNotFoundError: [Errno 2] No such file or directory: '\\\\xyz\\abc\\fish\\orange'

我用模拟名称替换了实际的目录名称,但重要的是格式化斜杠。我宁愿在不使用 os 库的情况下解决这个问题。谢谢。

【问题讨论】:

  • 所有操作系统上使用正斜杠。使用os.path.exists(somepath) 会给你带来什么问题吗?
  • 先检查目录是否存在。如果您想在不考虑操作系统的情况下正确表示路径,也可以使用友好的建议 pathlib
  • r"\\xyz\abc" == '\\\\xyz\\abc',有什么问题?
  • @JacobIRR 我们稍后会将其打包成可执行文件,因此不想使用太多库来存储内存
  • 问题是copyfile 不会创建任何不存在的目录,而不是你如何表示路径。

标签: python python-3.x string backslash shutil


【解决方案1】:

你可以这样做。

import shutil 
from pathlib import Path
dir_path = Path(r"\xyz\abc\fish\orange\document1") print(dir_path) 
if dir_path.exist():
    shutil.copyfile("U:/Profile/Downloads/document1", dir_path)
else:
    print(f"{dir_path} do not exist")

你也可以捕捉到错误。

import shutil 
dir_path = r"\xyz\abc\fish\orange\document1" print(dir_path)
try: 
    shutil.copyfile("U:/Profile/Downloads/document1", dir_path)
except FileNotFoundError:
    print(f"{dir_path} do not exist")

【讨论】:

    猜你喜欢
    • 2010-12-14
    • 2016-08-30
    • 1970-01-01
    • 2013-06-24
    • 2012-02-10
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多