鱼C论坛

 找回密码
 立即注册
查看: 128|回复: 3

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

[复制链接]
发表于 2024-10-24 15:43:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
程序能正常运行,但遇上文件名有空格会出错。不改程序的情况下,有没有解决文件名兼容性的模块?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

主程序调用了其它多个模块,能不能在主程序里调用某个模块 在不改变原来程序的情况下来解决所有的文件名空格问题呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 20:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表