python - 将 Windows 路径转换为 Linux
问题描述
driving_log.csv
我为我的模拟器创建的每个图像的文件路径创建了一个 CSV 文件(从 my 调用它时出现错误,它file.py
与 CSV 文件位于同一目录中。
C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\center_2020_02_08_14_16_38_988.jpg,C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\left_2020_02_08_14_16_38_988.jpg,C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\right_2020_02_08_14_16_38_988.jpg,0,0,0,7.918889E-06
我正在使用 Arch Linux。我想遍历每一行并将其更改为:
/home/onur/Documents/behavioral-cloning-CARLA/IMG/center_2020_02_08_14_16_38_988.jpg,left_2020_02_08_14_16_38_988.jpg,right_2020_02_08_14_16_38_988.jpg,0,0,0,7.918889E-06
如您所见,我需要之后的所有内容\IMG\
。
解决此问题的最佳方法是什么?我应该将每个字符串切片IMG\
并取其后的内容还是使用正则表达式?
我已经对此特定行进行了尝试,以查看它是否有效,但无效:
string = r"C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\center_2020_02_08_14_16_38_988.jpg,C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\left_2020_02_08_14_16_38_988.jpg,C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\right_2020_02_08_14_16_38_988.jpg,0,0,0,7.918889E-06 "
new_string = string.replace(r"'C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\'", r"'/home/onur/Documents/behavioral-cloning-CARLA/IMG/'", 3)
print(new_string)
这是输出:
C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\center_2020_02_08_14_16_38_988.jpg,C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\left_2020_02_08_14_16_38_988.jpg,C:\Users\a-ozb\Desktop\onur\behavirol-cloning-carla\IMG\right_2020_02_08_14_16_38_988.jpg,0,0,0,7.918889E-06
解决方案
如果你在 *nix 机器上运行你的代码,你可以使用这个PureWindowsPath
类:
>>> from pathlib import PureWindowsPath, PurePosixPath
>>> path = PureWindowsPath('C:\\Users\\foo\\bar')
>>> path.parts
('c:\\', 'Users', 'foo', 'bar')
>>> PurePosixPath('/usr', *path.parts[2:])
PurePosixPath('/usr/foo/bar')
您可以将字符串替换方法应用于文本文件中的每一行,如下所示:
with open("input.csv", "r") as f_in:
with open("output.csv", "w") as f_out:
for line in f_in:
new_line = line.replace(...) # magic goes here
f_out.write("{}\n".format(new_line))
推荐阅读
- azure-api-management - 将本地 LDAP 配置到 Azure API 管理器?
- javascript - 当您从逻辑中知道类型正确时,如何“修复”流类型?
- python - 如何在任意点绘制抛物线的斜率(切线)?
- ruby - Ruby:为什么每当 `#eql?` 被覆盖时,`#hash` 需要被覆盖?
- javascript - Vue组件模板部分的递归?
- gradle - Hyperledger:使用 Gradle 构建链码
- javascript - 返回序号之和
- vim - 添加 eslint-ignore 提示的 vim ale 快捷方式
- debugging - 如何让radare2接受十六进制输入
- azure-api-management - JMS 队列作为 Azure API 的后端