如何将完整的windows文件路径作为用户输入并使用该文件

holgip5t  于 2022-12-19  发布在  Windows
关注(0)|答案(1)|浏览(103)

我正在尝试用python写一个程序,它将采用windows文件路径(使用反斜杠而不是正斜杠)并将文件转换为另一种文件类型,我认为input()和windows使用反斜杠的某种组合是导致错误的原因。
例如,用户可以输入类似于
C:\用户\用户\下载\文件.tdms
我想告诉用户从他们的文件资源管理器中复制文件路径并粘贴到程序中。我不能改变用户输入的内容,它必须是上面的形式。
下面是我的代码:

from nptdms import TdmsFile
from pathlib import Path, PurePosixPath

path = Path(input('enter file path: '))
path1 = PurePosixPath(path)
print(path1)

with open(path1, mode='r') as f:
    tdms_file = TdmsFile.read(f)
    tdms_file.to_csv(path + '.csv')

下面是我得到的错误:

(base) H:\Private\ahirani\python TDMS to CSV>testing.py
enter file path: "C:/Users/user/Downloads/file.tdms"
"C:/Users/user/Downloads/file.tdms"
Traceback (most recent call last):
  File "H:\Private\ahirani\python TDMS to CSV\testing.py", line 11, in <module>
    with open(path, mode='r') as f:
OSError: [Errno 22] Invalid argument: '"C:/Users/user/Downloads/file.tdms"'
rta7y2nd

rta7y2nd1#

看起来您使用的是PurePosixPath,尽管您的问题是专门针对Windows的。我会尝试使用WindowsPath和官方文档中列出的Path对象上的特定open方法。此外,看起来您的输入周围有一组额外的双引号

from nptdms import TdmsFile
from pathlib import WindowsPath

input_path = input('enter file path: ')
path = WindowsPath(input_path.replace('"', ''))

with path.open() as f:
    tdms_file = TdmsFile.read(f)
    tdms_file.to_csv(path + '.csv')

我没有立即访问Windows机器来测试这个,但它应该工作。测试你的问题是什么的好方法是搜索你的错误,并尝试将其硬编码为调试步骤。例如,看看这个SO thread

相关问题