python的 -c 可以直接在命令行中调用 python代码, 实际上 -c 就是 command 的意思。简言之就是 python -c 可以在命令行中执行 python 代码, 跟把代码放置在 .py 文件中,然后运行这个文件是一样的效果。
python -c "print('TYXC')"
python -c "print("TYXC")"
python -c '''print("TYXC")'''
这样还有一个好处就是也可以执行多行的代码:
python -c '''
import arrow
print(arrow.now())
'''
作用是:把xxx.py文件当做模块启动
接下来我们看看python xxx.py和python -m xxx.py有什么区别。
这是两种加载py文件的方式:
1叫做直接运行
2把模块当作脚本来启动(注意:但是__name__的值为’main’ )
不同的加载py文件的方式,主要是影响——sys.path 这个属性。sys.path 就相当于liunx中的PATH。
# 目录结构如下
package/
__init__.py
mod1.py
package2/
__init__.py
run.py
# run.py 内容如下
import sys
from package import mod1
print(sys.path)
直接启动是把run.py文件,所在的目录放到了sys.path属性中。
模块启动是把你输入命令的目录(也就是当前路径),放到了sys.path属性中。
# 直接启动
python package2/run.py
# 模块启动
python -m package2.run
这时如果直接启动就会报错:ImportError: No module named package
。
因为import的package模块的路径此时不在sys.path中,而使用模块启动则不会出现问题。
python -c 妙用
python -m 参数