在Python py中調(diào)用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中調(diào)用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環(huán)境下輸入
python -v
就可以進(jìn)入到Python命令行模式
輸入
quit()
退出python 命令行模式
三火欧、os.chdir() 切換目錄
os.getcwd() 獲得當(dāng)前目錄
os.listdir() 返回一個(gè)由文件名和目錄名組成的列表
os.path.isdir() 用于判斷對象是否為已目錄
import os
os.path.abspath(path) 返回絕對路徑
print(os.path.abspath(".")) #當(dāng)前目錄的絕對路徑
print(os.path.abspath(r"..")) #上級目錄的絕對路徑
print(os.path.abspath(r"D:\python_workshop\python6\revise\函數(shù).py"))
python console
Python 控制臺
四、Python提供了future模塊妨托,把下一個(gè)新版本的特性導(dǎo)入到當(dāng)前版本瑞侮,于是我們就可以在當(dāng)前版本中測試一些新版本的特性
from future import print_function
python2 調(diào)用 python3 print函數(shù)接口
其實(shí)這句函數(shù)之后,即使在低版本的python2.X,當(dāng)使用print函數(shù)時(shí)髓霞,須python3.X那樣加括號使用。tips:python2.X中print不需要括號畦戒,而在python3.X中則需要方库。
五、當(dāng)import 的模塊和.py 文件名一樣的話障斋,會出錯(cuò)
修改文件后纵潦,由于存在datetime.pyc 文件徐鹤,還是會出錯(cuò)。
刪除datetime.pyc 后就能正常運(yùn)行了
.py 文件與 .pyc 文件的區(qū)別
原來Python的程序中邀层,是把原始程序代碼放在.py文件里返敬,而Python會在執(zhí)行.py文件的時(shí)候。將.py形式的程序編譯成中間式文件(byte-compiled)的.pyc文件被济,這么做的目的就是為了加快下次執(zhí)行文件的速度救赐。
所以,在我們運(yùn)行python文件的時(shí)候只磷,就會自動首先查看是否具有.pyc文件经磅,如果有的話,而且.py文件的修改時(shí)間和.pyc的修改時(shí)間一樣钮追,就會讀取.pyc文件预厌,否則,Python就會讀原來的.py文件元媚。
其實(shí)并不是所有的.py文件在與運(yùn)行的時(shí)候都會產(chǎn)生.pyc文件轧叽,只有在import相應(yīng)的.py文件的時(shí)候,才會生成相應(yīng)的.pyc文件
六刊棕、import 和 from import 的區(qū)別
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模塊導(dǎo)入a1工具(可以是某個(gè) 函數(shù),全局變量甥角,類)网严,import A是導(dǎo)入整個(gè)A模塊的全部內(nèi)容(包括全部的函數(shù),全局變量嗤无,類)震束。
2、內(nèi)存分析:from...import...會在內(nèi)存中創(chuàng)建并加載該模塊工具的副本当犯,當(dāng)有另外一個(gè)程序?qū)霑r(shí)垢村,會在內(nèi)存中創(chuàng)建另一個(gè)副本進(jìn)行加載,不會共用一個(gè)副本嚎卫。所以程序進(jìn)行的修改不會影響到被導(dǎo)入的原模塊嘉栓,且不同程序之間不會互相影響。
import...方法導(dǎo)入模塊會在內(nèi)存中直接加載該模塊的全部屬性拓诸。當(dāng)出現(xiàn)多個(gè)程序?qū)朐撃K時(shí),會共用一個(gè)模塊侵佃,程序之間會互相影響,包括原模塊恰响。
datetime https://www.liaoxuefeng.com/wiki/1016959663602400/1017648783851616
from datetime import datetime
now = datetime.now() # 獲取當(dāng)前datetime
print(now)
2015-05-18 16:28:07.198690
print(type(now))
<class 'datetime.datetime'>
注意到datetime是模塊趣钱,datetime模塊還包含一個(gè)datetime類,通過from datetime import datetime導(dǎo)入的才是datetime這個(gè)類胚宦。
如果僅導(dǎo)入import datetime首有,則必須引用全名datetime.datetime燕垃。
datetime.now()返回當(dāng)前日期和時(shí)間,其類型是datetime井联。
datetime轉(zhuǎn)換為timestamp
str轉(zhuǎn)換為datetime
很多時(shí)候卜壕,用戶輸入的日期和時(shí)間是字符串,要處理日期和時(shí)間烙常,首先必須把str轉(zhuǎn)換為datetime轴捎。轉(zhuǎn)換方法是通過datetime.strptime()實(shí)現(xiàn),需要一個(gè)日期和時(shí)間的格式化字符串:
datetime轉(zhuǎn)換為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轉(zhuǎn)換為str
如果已經(jīng)有了datetime對象蚕脏,要把它格式化為字符串顯示給用戶侦副,就需要轉(zhuǎn)換為str,轉(zhuǎn)換方法是通過strftime()實(shí)現(xiàn)的驼鞭,同樣需要一個(gè)日期和時(shí)間的格式化字符串
>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28