记录一些python小窍门

每隔一段时间再看廖大神博客都会有新的领悟

廖雪峰的博客



python批量重命名文件

1
2
3
4
5
6
7
import os
path = ''
names = os.listdir(path) #listdir获取路径下的所有文件名
for name in names:
print('当前文件名是:'+name)
print('输入命名后的文件名')
os.rename(path+name,path+input()+os.path.splitext(path+name)[-1])#splitext[-1]获取文件扩展名

新名不能与路径中某个文件名字相同

改进:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import os
path = '' #填入路径.如/home/pjs/picture/
old_names = os.listdir(path)
for old_name in old_names:
while True:
print('当前文件名是:' + old_name)
print('重命名:')
ext = os.path.splitext(path + old_name)[-1]
new_name = path+input()+ext
try:
if new_name not in old_names:
os.rename(path+old_name,path+new_name+ext)
break
except:
print("重新输入:")

利用requests下载图片,
请求不到图片可向headers里添加referer与host


1
2
3
4
5
6
7
8
9
10
import requests
headers = {
'User-Agent':'',
'Host':'',
'Referer':''
} #添加头
url = '' #图片地址
img = requests.get(url,headers=headers).content
with open('name','wb') as f:
f.write(img)

sys模块
用sys模块进行linux编程当真方便

参考

1.
vi test.py

1
2
3
import sys
a = sys.argv[0]
print(a)

运行python3 test.py得到结果
test.py

2.
将a = argv[0]改为a = argv[1]

运行python3 test.py what得到结果
what

3.
将a = argv[1]改为a = argv[:]
运行python3 test.py what a得到结果:
['a.py', 'what', 'a']

so…sys.argv[]为保存用户输入参数的列表

python多组输入

1
2
3
4
5
try:
while True:
a = input()
except EOFError:
pass

1
a,b = map(int,input().split())

python生成动态变量

1
2
for i in range(5):
exec('name{} = {}'.format(i,i))

生成name1,name2…name5,并赋值

python迭代文件内容

1
2
3
with open('/etc/passwd') as f:
for i in f:
print(i)

python列表生成式

1
2
3
4
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

生成器

1
2
In [10]: sum(x ** 2 for x in range(4)) 
Out[10]: 14

生成器只能遍历一次

迭代器生成器参考

未完….