很多初学者在使用Python期间,尤其是Windows环境下,常会遇到:

给命令行或代码参数中传递路径时,路径中包含了空格

其不知道路径中的空格,会导致实际上传递的参数,已经被空格分开为多个部分,因而出现找不到子路径等异常情况。

pyinstaller打包时路径带空格导致异常

某人用PyInstaller去打包python程序,用命令:

C:\Users\Administrator>pyinstaller -F D:\python VIP\chap16\stusystem

结果出错:

39 INFO: PyInstaller: 4.1

39 INFO: Python: 3.9.0

39 INFO: Platform: Windows-10-10.0.18362-SP0

40 INFO: wrote C:\Users\Administrator\python.spec

41 INFO: UPX is not available.

script 'C:\Users\Administrator\VIP\chap16\stusystem' not found

其中很明显就是:

-F参数所传入的路径D:\python VIP\chap16\stusystem中间有空格

导致实际结果相当于:

C:\Users\Administrator>pyinstaller -F D:\python

而此处很明显Windows中只存在目录D:\python VIP,而(估计)不存在D:\python

所以导致最后报错找不到相关目录:

script 'C:\Users\Administrator\VIP\chap16\stusystem' not found

根本原因:

各种系统(Windows、Linux、Mac等)中的路径,往往是通过空格去区分参数的

your_command parameter1 parameter2

命令行环境

代码运行环境

中,所以,如果路径中有空格,往往会导致路径被空格区分开,变成多个参数,导致传入的路径本身不对,且后续其他参数也不正常了,导致结果异常

对于此处的pyinstaller的命令行参数语法是:

~  pyinstaller --help

usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]

[--add-data ]

[--add-binary ] [-p DIR]

[--hidden-import MODULENAME]

[--additional-hooks-dir HOOKSPATH]

[--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]

[--key KEY] [-d {all,imports,bootloader,noarchive}] [-s]

[--noupx] [--upx-exclude FILE] [-c] [-w]

[-i ]

[--version-file FILE] [-m ] [-r RESOURCE]

[--uac-admin] [--uac-uiaccess] [--win-private-assemblies]

[--win-no-prefer-redirects]

[--osx-bundle-identifier BUNDLE_IDENTIFIER]

[--runtime-tmpdir PATH] [--bootloader-ignore-signals]

[--distpath DIR] [--workpath WORKPATH] [-y]

[--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]

scriptname [scriptname ...]

此处如果输入:

pyinstaller -F D:\python VIP\chap16\stusystem

其实变成了:

参数1:-F D:\python

参数2:VIP\chap16\stusystem

-F参数的值是:D:\python

scriptname参数的值是:VIP\chap16\stusystem

很明显,不是我们希望的结果了,就会导致异常报错了。

解决办法:尤其是命令行操作时,或者代码调用传入的路径时,要确保传入的路径中不能包含空格

如果路径中包含空格,则可以用(双)引号括起来:

pyinstaller -F "D:\python VIP\chap16\stusystem"

这样就是我们希望的效果了:

参数1:-F "D:\python VIP\chap16\stusystem"

-F参数的值是:D:\python VIP\chap16\stusystem

即可正常运行。

crifan.com,使用署名4.0国际(CC BY 4.0)协议发布 all right reserved,powered by Gitbook最后更新:

2020-12-23 21:15:20

路径中包含空格很多初学者在使用Python期间,尤其是Windows环境下,常会遇到:给命令行或代码参数中传递路径时,路径中包含了空格其不知道路径中的空格,会导致实际上传递的参数,已经被空格分开为多个部分,因而出现找不到子路径等异常情况。举例:pyinstaller打包时路径带空格导致异常某人用PyInstaller去打包python程序,用命令:C:\Users\Administrator&gt...
最近在采集windows上 间件的时候,遇到了文件 路径 空格 的问题。 例如:Aapche的安装 路径 为D:\Program Files\Apache Software Foundation\Apache2.2。 采集apache要读取配置文件D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf 执行一些D:\Program Files\Apache Software Foundation\Apache2.2\bin\httpd.exe -v 这种命令。 读取配置文件是没有问题的,因为用的是 python 代码,打开
在打开plist文档遇到 路径 空格 的问题。添加以下即可。 因为将文件直接拖入终端后会在 空格 前添加 \ ,删除即可~ python /Users/robbie/Desktop/read_plist_file.py Please input your plist file:/Users/robbie/Downloads/Users\ 2/2020\ 05\ 05/PDCA.plist Please input your plist file:/Users/robbie/Downloads/Users\ 2
windows系统使用 python 压缩文件到一个有 空格 的文件 路径 里面,结果一直报错压缩不到指定的文件夹里面去,而是压缩到了那个 空格 之前的文件夹里面,试了好久终于找到了一个很简单的方法。 具体如下: opt = "Rar.exe a -ep1 %s %s\\*.*" %(folder,temp_folder) 变量folder是一个 空格 路径 :E:\bak_log\ztc\vms\s
创建文件夹的时候,后面没有加 ‘/’,到循环体 再加,报错。 predict_res_save_path = 'predict_results/' + time.strftime("%Y_%m_%d_%H_%M_%S ", time.localtime()) if not os.path.exists('predict_res_save_path'): print...
img_dir = [] for parent, dirnames, filenames in os.walk(rootdir): for img_one in filenames: new_filename = img_one.replace(
要读取 空格 路径 ,可以使用 Python 的原始字符串(raw string)来避免 空格 被解释成特殊字符。在原始字符串 ,反斜杠字符不会被解释为转义字符。 例如,如果想读取 路径 为 "C:\Users\username\Documents\file.txt" 的文件,可以使用如下代码: path = r'C:\Users\username\Documents\file.txt' 使用原始字符串时,在字符串前面加上一个 "r",这样 Python 就会将字符串按照原样进行解析,而不会将反斜杠字符解释成转义字符。这样就可以正确地读取 空格 路径 了。