我正在使用 Python 工作,需要将以下内容进行转换:
C:\folderA\folderB to C:/folderA/folderB
我有三个方法:
dir = s.replace('\\','/')
dir = os.path.normpath(s)
dir = os.path.normcase(s)
在每种情况下,输出都已经被产生。C:folderAfolderB
我不确定我做错了什么,有什么建议吗?
我最近发现了这个,觉得值得分享:
import os
path = "C:\\temp\myFolder\example\\"
newPath = path.replace(os.sep, '/')
print(newPath) # -> C:/temp/myFolder/example/
replace
参数的顺序和转义,应该是:s.replace('\\', '/')
还有:
posixpath.join(*s.split('\\'))
os.path.join(*s.split('\\'))
foo/bar\baz
将变成foo/bar/baz
,这可能不是我们想要的。我认为像@Numabyte的答案中使用os.sep
是更好的跨平台解决方案。 - aravk33尝试
path = '/'.join(path.split('\\'))
os.path.sep.join(...)
。 - wnnmaw抱歉来晚了,但我想知道为什么没有人提出pathlib库。
pathlib是一个"面向对象的文件系统路径"模块。
要将Windows风格(反斜杠)路径转换为斜杠(通常用于Posix-Paths),您可以使用pathlib以非常冗长(并且平台无关)的方式完成:
import pathlib
pathlib.PureWindowsPath(r"C:\folderA\folderB").as_posix()
>>> 'C:/folderA/folderB'
请注意,该示例使用字符串字面量"r"(避免"\\"作为转义字符)。 在其他情况下,路径应该被适当地引用(使用双反斜杠)"C:\\folderA\\folderB"
replace('\\', '/')
将不起作用! - ForeverLearning在Windows系统中,路径名的格式与其他系统不同。解决方案很简单,假设你有这样一个路径字符串:
data_file = "/Users/username/Downloads/PMLSdata/series.csv"
data_file = r"/Users/username/Downloads/PMLSdata/series.csv"
在字符串前面加上修饰符r,告诉Python这是一个原始字符串。在原始字符串中,反斜杠被解释为字面量,而不是转义字符。
path = 'some\thing'
,然后在另一个函数中我要访问这个变量。我希望能够使用 rpath
,但它不再起作用了。这种情况有解决方案吗? - NeStackr
,然后在末尾添加替换语句.replace('\\', '/')
。In>> path2 = r'C:\Users\User\Documents\Project\Em2Lph\'.replace('\\', '/')
In>> path2
Out>> 'C:/Users/User/Documents/Project/Em2Lph/'
path = 'some\thing'
,然后在另一个函数中我想要访问这个变量 path
。我希望能够使用 rpath
,但它不再起作用了。这种情况有解决方案吗? - NeStack这也可以工作:
def slash_changer(directory):
if "\\" in directory:
return directory.replace(os.sep, '/')
else:
return directory
print(slash_changer(os.getcwd()))
怎么样:
import ntpath
import posixpath
.
.
.
dir = posixpath.join(*ntpath.split(s))
.
.
我遇到的一个问题是当您尝试更改后跟立即整数的反斜杠时发生
img = "C:\folderA\folderB\61853639372.png"
这将导致更改文件名,为解决此问题,请使用以下代码
import os
img = r"C:\folderA\folderB\61853639372.png"
img = os.path.normpath(img)
print(img)
这是完美的解决方案,将字母'r'放在要转换的字符串之前,以避免所有特殊字符,如'\t'和'\f'... 就像下面的例子:
str= r"\test\hhd"
print("windows path:",str.replace("\\","\\\\"))
print("Linux path:",str.replace("\\","/"))
结果:
windows path: \\test\\hhd
Linux path: /test/hhd
r'C:\folderA\folderB'
。 - Andys.replace('//', '\')
иҝҗиЎҢдёҚдәҶгҖӮ'\'
жҳҜж— ж•Ҳзҡ„пјҢдҪ йңҖиҰҒиҪ¬д№үеҸҚж–ңжқ гҖӮжӯЈзЎ®зҡ„ж–№жі•еә”иҜҘжҳҜs.replace('/', '\\')
гҖӮ еҪ“е®ғжӯЈеңЁиҝҗиЎҢж—¶пјҢе®ғеҸӘдјҡз»ҷдҪ\f
пјҢиҝҷжҳҜдёҖдёӘжҚўиЎҢз¬ҰгҖӮ - Chrispresso