‘壹’ 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)]是又方括号的,否则不能成为列表中嵌套列表了。