文件操作
1.open()
open
首先open是python内置的一个打开文件,创建一个file对象的方法。与之相似的方法有个file。其功能上没有太大的区别。
file object = open(file_name [, access_mode][, buffering])
其中file_name是文件名,access_mode是打开文件的模式(如只读,读写),buffering表示访问文件时的寄存行。
access_mode的选项有
r :只读模式打开,文件指针放到文件的开头。(默认模式)
r+ :打开一个文件用于读写,文件指针放到文件的开头。
w :打开一个文件用于写入,若文件存在则覆盖源文件,若不存在则创建。
w+:打开一个文件用于读写。。。
a :打开一个文件用于追加写入,若文件存在,文件指针在文件的结尾。
a+ :打开一个文件用于读写追加,若文件存在,文件指针在文件的结尾。
b :和上述mode都可以组合使用,代表的是以二进制格式。
file对象的属性。
file.closed 判断文件是否关闭
file.mode 判断文件的访问模式
file.name 判断文件的名称
>>> f = open('txt','a+')
>>> f.read()
'1\n2\n3\n4\n5\n'
>>> f.closed
False
>>> f.mode
'a+'
>>> f.name
'txt'
>>>
2.close() 方法:
file的close方法是用来关闭文件的,当关闭后,不能再操作文件,并且将修改数据同步至文件内。
f.close()
3.write()方法:
file的write方法是将任何的字符串写入一个打开的文件内。
f.write(‘string content …..’)
4.read()方法:
file的read方法式将文件中的内容读出来。但是要注意,第一次调用后,指针会指向文件末尾,导致第二次调用时文件读不出内容。
f.read() 要想打印出文件内容,需要print f.read()
5.seek()方法,文件定位:
file的seek方法可以定位文件指针的位置。seek(offset[,from]),offset表示要移动的字节数,from指点开始移动字节的参考位置。from为0表示文件开头,from为1表示当前位置。from为2表示文件末尾。
>>> f = open('txt','a+')
>>> f.read()
'1\n2\n3\n4\n5\nak47m4a1'
>>> f.read()
''
>>> f.seek(0,0)
>>> f.read()
'1\n2\n3\n4\n5\nak47m4a1'
6.flush()方法
file的flush方法可以直接将内部的所有缓冲区中的数据立刻写入文件,而不是被动的等待
f.flush()
7.readline()方法
file的readline读取整行(只有一行),包括‘\n’
8.readlines()方法
读取所有行,并且返回列表。
9.replace()方法
将旧的内容(old_text)使用新的内容(new_text)去替换。
用法file.replace(old_text,new_text)
文件的重命名
重命名需要Python的OS模块,比如删除,重命名,但是使用前必须导入OS模块。
语法:
os.rename(current_file_name, new_file_name)文件的删除
语法:
os.remove(“test2.txt”)目录的创建目录
语法:
os.mkdir(“newdir”)当前所处位置
语法:
os.chdir(“newdir”)得到所处目录位置
语法:
os.getcwd()
模块
- 模块: 实质上是系统可以找到的以.py结尾的文件
导入模块的路径
- python的默认搜索路径sys.path
- 添加自定义的搜索路径时,sys.path是一个列表,
sys.apth.append(“path”); - sys.path.append(“/home/kiosk/1-Pythonv3/day08/code”)
- sys.path.insert(0,’/home/kiosk’)
导入一个模块的实质是将模块的文件重新运行一次;
导入模块的方法
import module1,module2
from 模块名 import 函数名
from 模块名 import 函数名 as 函数别名
import 模块名 as 函数别名
模块的分类
- 内置模块(os,sys,time)
- 自定义模块
- 第三方模块 #开源
常用的内置模块
os,sys,time,datetime,json/pickle,shutil,random
python 随机生成验证码
首先随机的生成数字或者字母肯定需要的是random模块。
random是随机数生成器。
import random
print random.random()
print random.randint(1,10)
print random.randrange(1,11)
以上的是最常见的随机数生成方法,看看打印结果。
0.176575931986
7
9
没错,第一个含义是0到1之间的随机浮点数。
第二个的含义是1到10的int型整数
第三个的含义是1到10的int型整数
利用random去创建一个验证码。
code = []
for i in range(0,5):
if 0 == random.randint(0,2):
code.append(str(random.randint(1,9)))
else:
temp = random.randint(65,90)
code.append(chr(temp))
print ''.join(code)
执行:
3M5DV
WT27J
包
- 导入一个包的实质是运行包里面的init.py文件;
- 导入包的方法:
import 包名
from 包名 import 模块名
import 包名 - 常用的几种方式
1)调用模块:from 包 import 模块
访问:模块.函数()
2)调用模块:import 模块
访问:包.模块.函数()
python 操作Mariadb 数据库
首先我使用的是Pycharm,在操作数据库之前需要先导入相关的模块。
这个包叫做MySQLdb,按照网上的教程进行安装。
先看看数据库内要查询的信息。
MariaDB [test]> select * from test.Userinfo;
+----+-------+----------+
| id | name | password |
+----+-------+----------+
| 1 | Jack | red123 |
| 2 | Tom | bule456 |
| 3 | Jerry | cent789 |
+----+-------+----------+
3 rows in set (0.00 sec)
一个简单的查询实例。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb
# 连接数据库
conn = MySQLdb.connect(host='127.0.0.1'
,user='root'
,passwd='123'
,db='test')
# 获得一个游标
cur = conn.cursor()
# 执行SQL语句 (返回值是查询表中的行数,影响的行数)
reCount = cur.execute('select * from Userinfo')
# 获取数据库的信息
data = cur.fetchall()
# 关闭数据库
conn.close()
print 'The rows of this table is %d' %(reCount)
print data
执行结果:
The rows of this table is 3
((1L, ‘Jack’, ‘red123’), (2L, ‘Tom’, ‘bule456’), (3L, ‘Jerry’, ‘cent789’))
其中的话fetchall() 是返回所有,而fetchone是返回一行数据。
数据库的插入操作:
import MySQLdb
conn = MySQLdb.connect(host='localhost', \
user='root', \
passwd='123', \
db='test')
cur = conn.cursor()
sql = 'insert into Userinfo (id,name,password) values(%s,%s,%s)'
param = (4,'Laura','Xman007')
try:
cur.execute(sql,param)
conn.commit()
except:
conn.rollback()
conn.close()