blackantt 发表于 2024-10-24 15:43:06

多行程序能正常运行,但遇上文件名有空格会出错。有没有解决文件名兼容性的模块?

程序能正常运行,但遇上文件名有空格会出错。不改程序的情况下,有没有解决文件名兼容性的模块?

FishC 发表于 2024-10-24 15:49:19

可以使用 `shlex` 模块来解决文件名包含空格的问题。`shlex.quote()` 函数可以为文件名加上合适的引号,使其兼容在命令行中使用。

import shlex

filename = "file name with spaces.txt"
safe_filename = shlex.quote(filename)

# 现在可以在命令行调用中安全地使用 safe_filename

这样就不用改动现有程序逻辑,只需在调用命令前处理一下文件名即可。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

blackantt 发表于 2024-10-24 15:53:03

FishC 发表于 2024-10-24 15:49
可以使用 `shlex` 模块来解决文件名包含空格的问题。`shlex.quote()` 函数可以为文件名加上合适的引号,使 ...

主程序调用了其它多个模块,能不能在主程序里调用某个模块 在不改变原来程序的情况下来解决所有的文件名空格问题呢?

FishC 发表于 2024-10-24 16:00:25

blackantt 发表于 2024-10-24 15:53
主程序调用了其它多个模块,能不能在主程序里调用某个 ...

可以试试使用 `os` 模块中的 `subprocess.list2cmdline()` 函数,这样你只需在主程序中对传递的参数进行处理,不需要修改其他模块的代码。

例如,假设你有多个模块需要文件名作为参数,可以在主程序中集中处理:

import subprocess

def safe_args(args):
    return subprocess.list2cmdline(args)

# 用法示例
filename = "file name with spaces.txt"
command = ["program", filename]

safe_command = safe_args(command)

# 现在调用命令时,使用 safe_command

这样可以确保处理的文件名不受空格影响,而无需修改其他模块代码。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 多行程序能正常运行,但遇上文件名有空格会出错。有没有解决文件名兼容性的模块?