『壹』 python報錯tmpisnotadirectory
題主是否想詢問「python報錯tmp is not a directory是怎麼回事」?這是因為代碼中指定的路徑實際上是文件名,而不是目錄名。根據查詢Python知識及操作信息得知這個錯誤是因為 Python 嘗試打開一個目錄時,實際上給出的路徑是一個文件名,而不是一個目錄,就會出現報錯tmp is not a directory的提示。例如有一個名為 data.txt 的文件,如果嘗試打開 data.txt 文件所在的目錄,就會觸發這個錯誤。要解決這個問題,需要在指定路徑時使用正確的目錄名和文件名。
『貳』 python如何定義函數將小寫轉換為大寫
1、全部轉換成大寫:upper()
用法: str = 『marsggbo』
print str.upper()
結果:MARSGGBO
2、全部轉換成小寫:lower()
用法:str = 'MarsGGbO'
print str.lower()
結果: marsggbo
3、首字母轉換成大寫:capitalize() ,其餘全部小寫
注意:此方法返回的字元串只有它的第一個字元大寫的副本。
用法:str = 'mars is VEry sliM and cLever!'
print str.capitalize()
結果:Mars is very slim and clever!
4、標題首字母大寫:title()
用法:str = 'mARS iS slim and cLEver!'
print str.title()
結果:Mars Is Slim And Clever!
輸入一串字元,將大寫字母轉換成小寫字母,小寫字母轉換為大寫字母
a = input("請 輸入字元:")
b = []
for n in a :
if "a"<= n <= "z":
b.append(n.upper())
elif"A" <= n <= "Z" :
b.append(n.lower())
else:
b.append(n)
print("".join(b))
參考資料:網路——Python(計算機程序設計語言)
『叄』 Python中執行系統命令常見的幾種方法
(1)os.system
# 僅僅在一個子終端運行系統命令,而不能獲取命令執行後的返回信息
# 如果再命令行下執行,結果直接列印出來例如:import osos.system('ls')
chk_err_log.py CmdTool.log install_log.txt install_zabbix.sh manage_deploy.sh MegaSAS.log
(2)os.popen
#該方法不但執行命令還返回執行後的信息對象
#好處在於:將返回的結果賦於一變數,便於程序的處理。
例如:import ostmp = os.popen('ls *.sh').readlines()tmp['install_zabbix.shn', 'manage_deploy.shn', 'mysql_setup.shn', 'python_manage_deploy.shn', 'setup.shn']
(3)使用模塊subprocess使用方法:import subprocess
subprocess.call (["cmd", "arg1", "arg2"],shell=True)
好處在於:運用對線程的控制和監控,將返回的結果賦於一變數,便於程序的處理。
如獲取返回和輸出:
import subprocess
p = subprocess.Popen('ls *.sh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print p.stdout.readlines()
for line in p.stdout.readlines():
print line,
retval = p.wait()
(4) 使用模塊commands模塊
常用的主要有兩個方法:getoutput和getstatusoutput
import commands
commands.getoutput('ls *.sh')
'install_zabbix.shnmanage_deploy.shnmysql_setup.shnpython_manage_deploy.shnsetup.sh'
commands.getstatusoutput('ls *.sh')
(0, 'install_zabbix.shnmanage_deploy.shnmysql_setup.shnpython_manage_deploy.shnsetup.sh')
注意: 當執行命令的參數或者返回中包含了中文文字,那麼建議使用subprocess,如果使用os.popen則會出現錯誤。
『肆』 python 按列讀取文本數據 列表越界咋回事啊@_@ IndexError:list index out of range
因為空行導致split函數返回的tmp為空,所以tmp[0]導致了數組越界。
分析思答瞎路:
1、報錯信息裡面已經提示了第12有誤。
2、提示為數組index越界,而12行的代碼中tmp[0]涉及數組。
3、找到tmp的定義,是split函數分解之後的內容,應當為一個list列表。
4、但是此處連tmp[0]都提示梁舉兄有錯,說明tmp中沒有任何元素。
5、推得for i in f0,中的沒一行的數據i有問題,當運行到最後,回出現一個由問題的i。
所以文件最後一行為空行,通常為寫入文件函數每行之後附帶的 轉義字元導致。
IndexError: list index out of range錯誤的其他情況
第一種情況:
list[index]index超出范圍
第二種情況:
list是一個空的,沒有一個元素
進行list[0]就會報該錯誤。
一般外部輸入的數據都可能存在問題,所以通常在readlines或者read後要做一次處理。
這樣就避免了空橡襲行,欄位數不足,以及類型轉換出錯。
解決方案:
針對第一種情況,通過調試檢查代碼。
關於第二種情況,有兩種方法:
第一種:檢查讀入的數據是都有問題,比如讀入的txt文件是否存在空行等等,第二種解決方案,在代碼上改錯。
with open("linux_Yue_01.txt","r") as testFile:
testfileList = []
for v testFile.read().split(" ")
if not v.strip(): #字元串去掉空格不為空
continue
testfileList.extend([splitFileNameAndLabel(v)])
注意:[splitFileNameAndLabel(v)]是又方括弧的,否則不能成為列表中嵌套列表了。