问题标签 [path-separator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3936 浏览

vba - 为什么我们需要 Application.PathSeparator?

MS Office VBA 有一个属性叫做Application.PathSeparator.

我支持互操作性,但 Office只能在 Windows 和 MacOS 上运行,并且两个平台都使用相同的 \路径分隔符。

什么时候建议使用Application.PathSeparator(而不是简单地硬编码\并节省 22 次击键)?


需要明确的是,我确实认为在Stack Overflow 等国际网站上发布代码时支持国际差异很重要,因此我会经常使用Application.International诸如xlDateSeparatorand 之类的属性,更重要的是,xlDateOrder. (更多关于那些在这里

0 投票
2 回答
2542 浏览

python - python os.walk 显示混合的 windows 和 unix 路径

我正在尝试识别文件夹中具有特定名称的所有文件。我正在使用标准代码来执行此操作,如下所示:

我的问题是关于此代码在 Windows 机器中的输出,基本上路径的动态部分有错误的斜杠符号:

给出的起始文件夹是:

并且文件夹分隔符是 unix one:"/"

而 os.walk 函数找到的所有后续子文件夹都有斜线:"\"

所以最后我有无法立即使用的无效路径。这是python os库中的错误还是实际上是什么?

目前我可以很容易地用正确的分隔符替换错误的分隔符,但我想知道这是否是唯一的方法?

0 投票
2 回答
209 浏览

c# - Directory.GetFiles 在任何平台上都带有“/”

我试图在每次生成字符串时使用'/'charDirectory.GetFiles或不替换字符串来获取路径。即使我有一些宏告诉他在特定操作系统上使用 AltSeperator,Directory.GetDirectories我也会简单地要求库用作目录分隔符。'/'

0 投票
1 回答
433 浏览

.net-core - 如何在 .NET Core 中从 Linux 应用程序操作 Windows 路径,反之亦然?

我正在构建一个可以部署到 Windows 或 Linux Docker 容器的数据传输工具,该容器必须指示 SQL Server 拍摄数据库快照。此外,SQL Server 可能在 Windows 或 Linux 上,我需要指定.ss 文件在服务器上的位置。我一直在使用Path.GetFilenameWithoutExtension,Path.Combine等,但Path操作是在运行应用程序的操作系统的上下文中完成的。当我与 Windows 上的 SQL Server 实例交谈时,我需要可以在 Linux 中运行的 WindowsPath.Combine 之类的东西。现在我做自己的字符串操作,但Path如果可能的话,我更喜欢使用或专门构建的东西。我知道我正在运行什么操作系统,并且操作系统 SQL Server 正在运行,并且只需要一个与操作系统无关的Path.

0 投票
1 回答
82 浏览

c++ - 为什么不将路径除以默认构造路径只需在 Visual Studio 中添加尾随分隔符?

假设这filesystem::current_path将返回路径:

/tmp/1567519419.773012

但我想要一个尾随分隔符。如果看起来我应该做的就是:

这适用于 gcc给我:

/tmp/1567519419.773012/

但是在上,虽然filesystem::current_path也给了我没有尾随分隔符的绝对路径,但除以filesystem::path()没有效果。结果路径仍然是没有尾随分隔符的绝对路径。

我想要跨平台兼容的代码,并且我想避免检测当前路径是否已经有尾随分隔符。

我有什么可用的吗?

0 投票
1 回答
500 浏览

python - 使用 Python 缩短文件路径

我有一个应用程序应该向用户显示文件的路径。假设用户输入/home/me/foo/,应用程序应该将其缩短为~/foo.

有没有办法在 Python 中做到这一点,以便它与 Linux 和 Windows 跨平台工作?

0 投票
1 回答
286 浏览

python - 为什么从 os.walk() 返回的 root 包含 / 作为目录分隔符而 os.sep(或 os.path.sep)在 Win10 上返回 \?

为什么从os.walk()返回的根元素显示 / 作为目录分隔符但os.sep(或os.path.sep)在 Win10 上显示 \?

我只是想为文件夹中的一组文件创建完整路径,如下所示:

这是我得到的输出:

我知道 python 的一些库函数(如 open())将与混合路径分隔符一起使用(至少在 Windows 上),但依赖于该 hack 确实不能在所有库中得到信任。看起来从os.walk()os.path.sep.join())返回的项目应该根据所使用的操作系统产生一致的结果。谁能解释为什么会发生这种不一致?

PS - 我知道有一个更一致的库用于处理文件路径(以及许多其他文件操作) ,称为pathlib,它是在 python 3.4 中引入的,它似乎确实解决了所有这些问题。如果您的代码在 3.4 或更高版本中使用,是否最好使用pathlib方法来解决此问题?但是,如果您的代码是针对在 3.4 之前使用 python 的系统,那么解决这个问题的最佳方法是什么?

下面是pathlib的一个很好的基本解释:Python 3 Quick Tip: The easy way to deal with file paths on Windows, Mac and Linux

这是我使用pathlib的代码和结果:

这甚至可以更简洁地使用pathlib和列表理解来完成(每个使用的操作系统都正确处理所有路径分隔符):

这是非常 Pythonic 的,至少我觉得它很容易阅读和理解。.iterdir() 真的很强大,它使处理文件和目录相当容易,并且以跨平台的方式。你怎么看?

0 投票
1 回答
162 浏览

javascript - Windows 上 Atom / JavaScript 的路径分隔符

我开发了一个 Atom 包,它调用 SyncTeX(用于 LaTeX 反向查找的实用程序),然后在 Atom 中打开 SyncTeX 响应中指定的文件。我正在 Linux 上开发,但现在 Windows 上的用户告诉我这不起作用。

详细说明:SyncTeX 返回一个路径名,如C:\data\tex\main.tex,带有适用于 Windows 的反斜杠分隔符。然后我的包使用返回的字符串进行调用atom.workspace.open,这会导致 JavaScript 错误(找不到文件)。

奇怪的是,如果将字符串修改为使用正斜杠C:/data/tex/main.tex,则调用有效并且文件被打开。

我的问题:

  1. 这种行为是 Atom 特有的,还是某些底层技术(JavaScript、Electron、Node 等)特有的?我找不到任何关于此的文档。

  2. 既然替换\/显然是必要的,有没有首选的方法来实现它?一个简单的String.replace就足够了吗?

  3. 如果我总是进行替换,我是否会冒着破坏与其他平台的兼容性的风险?

0 投票
1 回答
160 浏览

python - 如果在 linux 和 windows 之间共享文件,python zipfile 库会出现问题

使用 python 管理 .zip 文件的zipfile 模块非常有趣。

但是,如果 .zip 文件是在 linux 系统或 macos 上创建的,则分隔符当然是“/”,如果我们尝试在 Windows 系统上使用此文件,则可能会出现问题,因为分隔符是“\”。因此,例如,如果我们尝试确定 .zip 文件中压缩的目录根目录,我们可以考虑如下:

但是在这种情况下,我们总是得到 packet_name = [] 因为 os.sep 是“\”,而由于压缩是在 linux 系统上完成的,所以路径是 'foo1/foo2'。

为了管理所有情况(在 linux 系统上压缩并在 Windows 系统上使用或相反),我想使用:

你觉得这怎么样?有没有更直接或更pythonic的方式来完成这项工作?

0 投票
0 回答
62 浏览

python - 在 Windows 上使用 / 作为路径,并让 stdlib 函数也使用它(glob、os.path 等)

即使在 Windows 上,如何强制 Python/用作路径分隔符(for globos.path等)?

我试过os.sep = '/'但它不起作用:

我想避免“黑客”,比如必须.replace('\\', '/')为每个路径添加,所以链接的问题,比如为什么不 os.path.join 使用 os.path.sep 或 os.sep?不要回答它。

我也试过:

但这里\没有被/.