Python脚本备忘录

os.mkdir()和os.makedirs()

os.mkdir() #只能创建单级目录,如果创建多级目录,会出现找不到path的问题
os.makedirs() #能创建多级目录
  • 代码演示
'''假设当前目录只有'/home/ly/Desktop/test/'是存在的'''
import os
path1 = '/home/ly/Desktop/test/dir1'
path2 = '/home/ly/Desktop/test/dir1/sub'
os.mkdir(path1) #不报错
os.makedirs(path2) #不报错
os.mkdir(path2) #报错,无法递归创建多个目录
os.makedirs(path1) #不报错

os.path.split()和os.path.splitext()

  • 结果返回的都是一个元组
import os
path = '/home/none/Desktop/file.txt'
print(os.path.split(path)) #分割文件目录和文件名
print(os.path.splitext(path)) #分割文件路径和后缀
 
执行结果:
('/home/none/Desktop', 'file.txt')
('/home/none/Desktop/file', '.txt')

os.path.join()合并两个路径或合并文件名和目录

import os
path = '/home/none/Desktop'
path1 = '/home/none/'
print(os.path.join(path,'file.txt'))
print(os.path.join(path,'/home/none/Desktop/file/path/'))
print(os.path.join(path1,'file.py'))
print(os.path.join(path1,'/home/none/test/file.py'))

执行结果:
/home/none/Desktop/file.txt
/home/none/Desktop/file/path/
/home/none/file.py
/home/none/test/file.py

sort与sorted的区别

  • sorted返回一个新的排序后的列表,原列表的顺序并未发生改变
test = [1,8,9,2]
a=sorted(test)
print(a)
print(test)
 
执行结果:
[1, 2, 8, 9]
[1, 8, 9, 2]
 
  • sort直接对原列表进行排序,返回的是None,也就是没有返回值
test = [1,8,9,2]
a = test.sort()
print(a)
print(test)
 
执行结果:
None
[1, 2, 8, 9]

列表转字符串

data = [-0.79, 598.11, 0.69, -122.44, 0.19, 141.44]
print(data)
str_data = ','.join(str(i) for i in data)
print(str_data)
 
执行结果:
[-0.79, 598.11, 0.69, -122.44, 0.19, 141.44]
-0.79,598.11,0.69,-122.44,0.19,141.44

python中的三目表达式

condition1 = True
condition2 = False
a = 'hello' if condition1 else 'world'
b = 'hello' if condition2 else 'world'
print(a+','+b)
 
执行结果:
hello,world

一个列表常犯的错误

每次想迭代列表并且删除原列表中指定的元素时,老是想到这样做,然后输出结果各种不对,按理说下面的程序最后输出应该是一个空列表,但结果却不符合预期,for每次按顺序获取列表内容,第一个循环从0开始,第二个从1开始,第三个从2开始,依次类推,但是每次列表被删除一个元素后,元素就会往前移一步,比如第一次删除9,这个元素后,8就变成了元素列表的第0个元素,第二次循环的时候本来要删除列表第1个元素8的,结果8变成了第0个元素,7变成了第1个元素,导致8没被删除,而7被删除了,就会出现漏删的情况

test = [9,8,7,1,2,3,5,4,6,0]
for i in test:
    test.remove(i)
print(test)
#输出
[8, 1, 3, 4, 0]
 
#排序后的程序
test = [9,8,7,1,2,3,5,4,6,0]
test.sort()
for i in test:
    test.remove(i)
print(test)
#输出
[1, 3, 5, 7, 9]

startswith() and endswith()

>>> str = 'abcdefg'
>>> str.startswith('a')
True
>>> str.startswith('b')
False
>>> str.startswith('b',1)
True
>>> str.endswith('g')
True
>>> str.endswith('f')
False
>>> str.endswith('fg')
True

python3升级pip

sudo pip3 install --upgrade pip 

if not 和if is not None

if not用来判断一个bool型的变量,这个变量可以是True或者False,也可以是其他变量,如果是非bool类型的变量,python将会进行转换,python中的空字符串、空列表、空元组、空字典、0,None等会转换为False,其他非0或非空的变量将转换为True,但是if is not None不会进行转换,空就是空,非空就是非空,由下面这段代码可以看出空列表并不为空,只是列表的元素个数为0,所以在使用if x is not None时满足条件,而用if时不满足条件,因为x被转换成bool类型,且为False

x=[]
if x:
    print('x')
if x is not None:
    print('not None')
if not x:
    print('if not')
 
执行结果:
not None
if not

eval函数

eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果,也可以将字符串转换成列表/元组/字典。

ly@lanyou:~$ python3
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1
>>> b = 2
>>> c = 'a + b'
>>> print(eval(c))
3
发布了92 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zZzZzZ__/article/details/104686313
今日推荐