一、输出重定向到文件

>>> with open('/home/f/py_script/passwd', 'rt+') as f1:
... print('Hello Dog!', file=f1)
...

二、参数列表的分拆

  当你要传递的参数已经是一个列表,但要调用的函数却接受分开一个个的参数值,这时候你要把已有的列表拆开来

>>> l
['cat', 1, 2, 3, 4]
>>> print(*l, sep=',') #更优雅的实现
cat,1,2,3,4
>>> print(','.join(str(x) for x in l))
cat,1,2,3,4

  以同样的方式,可以使用 ** 操作符分拆关键字参数为字典:

>>> def test(a, b, c='xxx'):
... print(a, b, c)
...
>>> d = {'a': 'dog', 'b': 'cat', 'c': 'horse'}
>>> test(**d) #以字典的values为参数
dog cat horse
>>> test(*d) #以字典的keys为参数
b c a
>>> test(*d.items()) #以字典的items为参数
('b', 'cat') ('c', 'horse') ('a', 'dog')

三、禁止输出换行符

>>> for x in a:
... print(x)
...
1
2
3
4
>>> for x in a:
... print(x, end=' ')
...
1 2 3 4

四、避免写入操作覆盖已有文件:open('/path/to/file', 'xt+')

>>> with open('/home/f/py_script/passwdtestsx', 'x+') as f:
... print('just a test!!', file=f)
...
>>> with open('/home/f/py_script/passwdtestsx', 'x+') as f:
... f.write('test once more!')
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileExistsError: [Errno 17] File exists: '/home/f/py_script/passwdtestsx'

五、读写压缩的数据文件:gzip与bz2模块

>>> with gzip.open('/home/f/testdir/tmp.sh.gz', 'rt') as f:
... f.readline()
...
'#!/bin/bash\n'

#gzip.open()、bz2.open()的操作方式与open()一致,但默认是以二进制格式打开,即:[rwx]b[+]

六、处理路径名称:os.path.basename()、os.path.dirname()

>>> os.path.basename('/etc/fstab')
'fstab'
>>> os.path.dirname('/etc/fstab')
'/etc'

七、检测文件是否存在

os.path.isdir
os.path.isfile
os.path.islink
>>> os.path.realpath('/etc/mtab')    #若为软链接,则显示其指向的真实路径
'/proc/3079/mounts'
os.path.exists
os.path.getsize #获取文件大小
os.path.getctime
os.path.getmtime
>>> os.path.getatime('/etc/mtab')    #最近访问时间,默认显示自1970-01-01到当前时间的秒数
1470885109.0129082 
>>> import time
>>> time.ctime(os.path.getatime('/etc/mtab')) #转换时间格式
'Thu Aug 11 11:11:49 2016'

八、获取目录内容的列表:os.listdir()、os.path.join('', '', ''...)

#显示子目录列表
>>> [file for file in os.listdir('/home/f') if os.path.isdir(os.path.join('/home/f',file))]
['.pki', '.ssh', '.links', '.config', '.gnupg', '.vim', 'book', '.dbus', 'Public', 'Downloads']
#显示文件列表
>>> [file for file in os.listdir('/home/f') if os.path.isfile(os.path.join('/home/f',file))]
['.serverauth.1216', '.nvidia-settings-rc', '.xscreensaver', '.xinitrc', '.bashrc', '.bash_history']

Python3 From Zero——{最初的意识:005~文件和I/O}的更多相关文章

  1. Python3 From Zero——{最初的意识:000~Initial consciousness}

    http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 a.编码 默认情况下,Python ...

  2. Python3 From Zero——{最初的意识:008~初级实例演练}

    一.构显国际橡棋8x8棋盘 #!/usr/bin/env python3 #-*- coding:utf-8 -*- color_0="\033[41m \033[00m" col ...

  3. Python3 From Zero——{最初的意识:006~数据编码与处理}

    一.读写CSV数据: #!/usr/bin/env python3 #-*- coding=utf8 -*- import csv with open('kxtx.csv', 'rt') as f: ...

  4. Python3 From Zero——{最初的意识:002~字符串和文本}

    一.使用多个界定符分割字符串 字符串.split(',')形式只适用于单一分割符的情况:多分割符同时应用的时候,可使用re.split() >>> line = 'asdf fjdk ...

  5. Python3 From Zero——{最初的意识:007~函数}

    一.编写可接受任意数量参数的函数:*.** >>> def test(x, *args, y, **kwargs): ... pass ... >>> test(1 ...

  6. Python3 From Zero——{最初的意识:004~迭代器和生成器}

    一.反向迭代:reversed() >>> a [1, 2, 3, 4] >>> for x in reversed(a): ... print(x, end=' ...

  7. Python3 From Zero——{最初的意识:003~数字、日期、时间}

    一.对数值进行取整:round(value,ndigits) >>> round(15.5,-1) #可以取负数 20.0 >>> round(15.5,0) #当 ...

  8. Python3 From Zero——{最初的意识:001~数据结构和算法}

    一.从队列两端高效插入.删除元素,及保留固定数量的数据条目: collections.deque([iterable[,maxlen=N]]) a = collections.deque([1, 2] ...

  9. 运行python “没有那个文件或目录3” 或 “/usr/local/bin/python3^M: bad interpreter: 没有那个文件或目录” 错误

    原因 如果使用的是#!/usr/local/bin/python3这种方式,就会出现 “/usr/local/bin/python3^M: bad interpreter: 没有那个文件或目录” 错误 ...

随机推荐

  1. Android中的RelativeLayout中组件的排放问题

    今天想仿照新浪微博的用户中心 主要就是那个头像的问题,这个看到就想到用相对布局,现在是我想把那个名称放到头像的上面去xml中定义如下: <RelativeLayout android:layou ...

  2. ac自动机fail树上按询问建立上跳指针——cf963D

    解法看着吓人,其实就是为了优化ac自动机上暴力跳fail指针.. 另外这题对于复杂度的分析很有学习价值 /* 给定一个母串s,再给定n个询问(k,m) 对于每个询问,求出长度最小的t,使t是s的子串, ...

  3. 线段树维护线性基并——17西安icpc a

    #include<bits/stdc++.h> using namespace std; #define N 10005 int a[N],n,k,q; struct LB{ ]; LB( ...

  4. [NOIP模拟13]题解

    A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了. 很显然乘法有交换率结合率所以操作顺序对最终结果没什么 ...

  5. 【前端技术】一篇文章搞掂:CSS

    Flex布局 Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性. /*父容器,设置弹性布局*/ .parent{display: flex;} /*设置父容器主轴方向* ...

  6. 2018——2019 20165239Exp9 Web安全基础

    Exp9 Web安全基础 一:基础问题回答 (1)SQL注入攻击原理,如何防御 •原理:它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语 ...

  7. 如何将已经下造好的apk安装到eclipse本身的模拟器里面

    参考资料:http://blog.csdn.net/zzp_403184692/article/details/7948212 在项目开发中,想将上一个版本的手机软件放到模拟器里面进行测试,但是如何操 ...

  8. 关于iframe定位碰到的问题。

    这几天在做自动化测试的时候发现一个问题,用JQUERY定位时,总是报错,MES:JQUERY IS NOT DEFINED. 检查自己定位没有问题,后来想是不是语法出了问题. 切换成XPATH来定位, ...

  9. bigdecimal解决小数间的加减乘除

    public class bigdecimal { public static BigDecimal div(double v1,double v2){ BigDecimal b1=new BigDe ...

  10. jmter 二次开发 IDEA 项目5.1

    jmter 二次开发 IDEA 项目5.1 IDEA 编译 Jmeter 5.0(二次开发) 1. Java环境配置 1.1     步骤1 1.2     步骤2 1.3     步骤3 1.4   ...