python -c 命令与python -m 命令的用法

python -c 命令

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())
'''

python -m 命令

python -m xxx.py

作用是:把xxx.py文件当做模块启动
接下来我们看看python xxx.py和python -m xxx.py有什么区别。

  1. python xxx.py
  2. 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 参数

你可能感兴趣的:(python)