首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Windows路径转换为Linux

将Windows路径转换为Linux
EN

Stack Overflow用户
提问于 2020-02-19 08:59:08
回答 1查看 221关注 0票数 1

我为我的模拟器创建的每个图像的文件路径创建了一个CSV文件(driving_log.csv),但我使用的是我兄弟的视窗计算机,所以现在每个图像的文件路径如下所示(大约有14000个)。当从我的file.py调用它时,我得到了一个错误,它与CSV文件在同一目录中。

代码语言:javascript
复制
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。我想遍历每一行并将其更改为:

代码语言:javascript
复制
/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\上切分每个字符串,然后取它后面的字符串,还是使用正则表达式?

我已经对下面这行代码进行了尝试,看看它是否可以工作,但没有:

代码语言:javascript
复制
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)

这是输出:

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-19 09:14:05

如果你在*nix机器上运行代码,你可以使用PureWindowsPath类:

代码语言:javascript
复制
>>> 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')

可以将字符串替换方法应用于文本文件中的每一行,如下所示:

代码语言:javascript
复制
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))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60291545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档