python - 将 Windows 路径转换为 ​​Linux 路径

标签 python regex linux windows

我为模拟器创建的每个图像的文件路径创建了一个 CSV 文件 (driven_log.csv),但当时我使用的是我兄弟的 Windows 计算机,所以现在文件路径如下所示每张图片(几乎有 14000 张)。从与 CSV 文件位于同一目录中的 file.py 调用它时出现错误。

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))

关于python - 将 Windows 路径转换为 ​​Linux 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60291545/

相关文章:

Python删除方括号和它们之间的无关信息

python - 缺少匹配的正则表达式概念(搜索前瞻)

python - sqlite3 命令行工具在 Ubuntu 中不起作用

linux - 如何持久化 linux 环境变量?

Python - 使用子进程的 Hive 命令 - 空结果

python - 在 pandas 数据框中应用 groupby 两次

python - 使用 Flask-Restful 返回呈现的模板在浏览器中显示 HTML

python - 列表理解可以分为两个列表吗?

javascript - 使用 RegEx 模式将字符串拆分为数组

linux - 如果测试 - 检查超过 7 天的文件 - Unix