VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • python基础教程之Python3 提升你脚本的逼格系列(一

通过输入重定向获取文件

脚本 filein.py 的内容如下:

#!/usr/bin/env python3

import fileinput

with fileinput.input() as f:
    tpl = "文件名: {} 行号: {}\n 行内容: {}"
    for line in f:
        print(tpl.format(f.filename(),
                         f.lineno(),
                         line), end='')

使用这个脚本

chmod +x filein.py
./filein.py  top.txt

终止脚本并给出错误信息

raise SystemExit('It failed!')

执行脚本

[root@sharkyun ~]# python3 error.py
It failed!
[root@sharkyun ~]# echo $?
1

脚本中输入的密码时隐藏

import getpass
user = getpass.getuser()
passwd = getpass.getpass()
print(user, passwd)
 
image.png

注意 getpass.getuser() 不会提示你输入用户名,而是获取到当运行脚本环境下的系统登录用户

假如你希望显示,并且使用输入的用户名请用 input() 替代

user = input('Enter your username: ')

获取终端的大小

有时候你需要获取运行脚本的大小,以便可以很正确的格式化输出

 
image.png

 
image.png

执行系统的命令并返回字符串结果

import subprocess
cmd = "top -b -n 1 -o %MEM"
cmd_ret = subprocess.getoutput(cmd)

lines = cmd_ret.split('\n')
dt = lines[0].split()[2]

print('获取时间:', dt)
for i in lines[7:]:
    pid, *_, cpu, mem, _, _ = i.split()
    print(pid, cpu, mem)

复制或者移动文件和目录

shutil 模块有很多便捷的函数可以复制文件和目录。使用起来也非常简单,比如:

import shutil

# 一般拷贝
shutil.copy(src, dst)

# 拷贝文件时候,连同文件的权限也拷贝,相当于 `shell` 中的 `cp -p src dst`
shutil.copy2(src, dst)

# 递归拷贝,相当于 `shell` 中的 `cp -R src dst`
shutil.copytree(src, dst)

# 移动文件
shutil.move(src, dst)

shutil.copytree() 假如被拷贝的对象中出现了符合链接文件,默认会拷贝这个符号链接指向的实际文件,假如只想拷贝符号链接本身,可以传递关键字参数,如下:

shutil.copytree(src, dst, symlinks=True)

shutil.copytree() 在进行递归拷贝时,还可以指的忽略哪些文件或目录

shutil.copytree(src, dst, ignore=shutil.ignore_patterns('*.', '*.pyc'))

当执行 shutil.copytree() 的时候,有可能会遇到错误异常的出现,比如一个无效的符合链接,一个无权访问的文件等。

避免无效的符合链接,只需要这样做

shutil.copytree(src, dst, ignore_dangling_symlinks=True)

其他的可以用捕获异常来处理

try:
    shutil.copytree(src, dst)
except shutil.Error as e:
    for src, dst, msg in e.args[0]:
        print(dst, src, msg)

也可以递归的删除

 shutil.rmtree(dst_dir)

未完,待续...



作者:千锋云计算好程序员shark
链接:https://www.jianshu.com/p/1639ec2d06f3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


相关教程