美文网首页
Linux Python shell 执行文件之间的文件调用

Linux Python shell 执行文件之间的文件调用

作者: tian_ddbb | 来源:发表于2019-12-09 14:43 被阅读0次

在Python py中调用sh

callsh.py:

#!/usr/bin/py

import sys
import os
print "start call sh file"
os.system('./fromsh.sh')
print "end call sh file"

fromsh.sh

#!/bin/bash
echo "from sh file "

chmod +x callsh.py
chmod +x fromsh.sh

./callsh.py
start call sh file
from sh file
end call sh file

在Shell sh中调用py

#!/bin/bash
echo 'start call py'
./frompy.py
echo 'end call py'
#!/usr/bin/python
print "from python"

chmod +x callpy.sh
chmod +x frompy.py

./callsh.py
start call sh file
from sh file
end call sh file

二、在Linux环境下输入

python -v

就可以进入到Python命令行模式


image.png

输入

quit()  

退出python 命令行模式

三、os.chdir() 切换目录
os.getcwd() 获得当前目录

os.listdir() 返回一个由文件名和目录名组成的列表
os.path.isdir() 用于判断对象是否为已目录
import os

os.path.abspath(path) 返回绝对路径
print(os.path.abspath(".")) #当前目录的绝对路径
print(os.path.abspath(r"..")) #上级目录的绝对路径
print(os.path.abspath(r"D:\python_workshop\python6\revise\函数.py"))

python console
Python 控制台

四、Python提供了future模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性
from future import print_function
python2 调用 python3 print函数接口
其实这句函数之后,即使在低版本的python2.X,当使用print函数时,须python3.X那样加括号使用。tips:python2.X中print不需要括号,而在python3.X中则需要。

五、当import 的模块和.py 文件名一样的话,会出错


image.png

修改文件后,由于存在datetime.pyc 文件,还是会出错。
删除datetime.pyc 后就能正常运行了

.py 文件与 .pyc 文件的区别

原来Python的程序中,是把原始程序代码放在.py文件里,而Python会在执行.py文件的时候。将.py形式的程序编译成中间式文件(byte-compiled)的.pyc文件,这么做的目的就是为了加快下次执行文件的速度。

所以,在我们运行python文件的时候,就会自动首先查看是否具有.pyc文件,如果有的话,而且.py文件的修改时间和.pyc的修改时间一样,就会读取.pyc文件,否则,Python就会读原来的.py文件。
其实并不是所有的.py文件在与运行的时候都会产生.pyc文件,只有在import相应的.py文件的时候,才会生成相应的.pyc文件

六、import 和 from import 的区别

https://blog.csdn.net/qq_41632611/article/details/81351437

https://baijiahao.baidu.com/s?id=1595360515695157210&wfr=spider&for=pc

1、语法分析:首先from A import a1 是从A模块导入a1工具(可以是某个 函数,全局变量,类),import A是导入整个A模块的全部内容(包括全部的函数,全局变量,类)。

2、内存分析:from...import...会在内存中创建并加载该模块工具的副本,当有另外一个程序导入时,会在内存中创建另一个副本进行加载,不会共用一个副本。所以程序进行的修改不会影响到被导入的原模块,且不同程序之间不会互相影响。

import...方法导入模块会在内存中直接加载该模块的全部属性。当出现多个程序导入该模块时,会共用一个模块,程序之间会互相影响,包括原模块。

datetime https://www.liaoxuefeng.com/wiki/1016959663602400/1017648783851616

from datetime import datetime
now = datetime.now() # 获取当前datetime
print(now)
2015-05-18 16:28:07.198690
 print(type(now))
<class 'datetime.datetime'>

注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。
如果仅导入import datetime,则必须引用全名datetime.datetime。
datetime.now()返回当前日期和时间,其类型是datetime。
datetime转换为timestamp
str转换为datetime
很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:

datetime转换为str

>>>from datetime import datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)
2015-06-01 18:19:59

datetime转换为str
如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28

相关文章

网友评论

      本文标题:Linux Python shell 执行文件之间的文件调用

      本文链接:https://www.haomeiwen.com/subject/oribgctx.html