Python入门(五)

1.file

a.打开文件方式(读写两种方式)

1、open() 方法
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

open(file, mode='r')

mode 参数有:

模式描述
t文本模式 (默认)。
x模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r/w/a可以与b/+组合成新模式。rb:二进制格式打开一个文件用于只读,r+打开一个文件用于读写

2、close()方法

fileObject.close();

一定要在操作后关闭文件,才能保证内容完全写入到文件中。

  • Python引入了with语句来自动帮我们调用close()方法:
with open('/path/to/file', 'r') as f:
print(f.read())
b.文件对象的操作方法

一、读

  • 1、 按字节读,File read() 方法
    概述
    read() 方法用于从文件读取指定的字节数,如果未给定或为负则读取所有

    语法
    read() 方法语法如下:
    fileObject.read();
    参数
    size – 从文件中读取的字节数。

    返回值
    返回从字符串中读取的字节。

  • 2、 按行读,File readline() 方法
    概述
    readline() 方法用于从文件读取整行,包括 “\n” 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。

语法
readline() 方法语法如下:

fileObject.readline(); 

二、写

  • 1、定位,File seek() 方法
    概述
    seek() 方法用于移动文件读取指针到指定位置。

    语法
    seek() 方法语法如下:

    fileObject.seek(offset[, whence])

    参数
    offset – 开始的偏移量,也就是代表需要移动偏移的字节数,如果是负 数表示从倒数第几位开始。

    whence:可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移;0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。

  • 2、写入,write()
    概述
    write() 方法用于向文件中写入指定字符串。

    在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文 件中是看不到写入的内容的。

    如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not ‘str’。

    语法
    write() 方法语法如下:
    fileObject.write( [ str ])
    参数
    str – 要写入文件的字符串。
    返回值
    返回的是写入的字符长度。

    c.学习对excel及csv文件进行操作

2.os模块

如果我们要操作文件、目录,可以在命令行下面输入操作系统提供的各种命令来完成。比如dir、cp等命令。

如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操作系统提供的接口函数,Python内置的os模块也可以直接调用操作系统提供的接口函数
操作文件和目录
操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中,这一点要注意一下。查看、创建和删除目录可以这么调用:
1、操作文件和目录:

# 查看当前目录的绝对路径:
>>> os.path.abspath('.')
'/Users/michael'
# 在某个目录下创建一个新目录,首先把新目录的完整路径表示出来:
>>> os.path.join('/Users/michael', 'testdir')
'/Users/michael/testdir'
# 然后创建一个目录:
>>> os.mkdir('/Users/michael/testdir')
# 删掉一个目录:
>>> os.rmdir('/Users/michael/testdir')

显示当前目录下的文件(size,最后修改时间,名字)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from datetime import datetime
import os

pwd = os.path.abspath('.')#查看当前目录的绝对路径:

print('      Size     Last Modified  Name')
print('------------------------------------------------------------')
#遍历当前文件夹下所有文件
for f in os.listdir(pwd):
#os.listdir(path)返回path指定的文件夹的名字的列表。 
    fsize = os.path.getsize(f)
#os.path.getsize(path)	返回文件大小,如果文件不存在就返回错误
    mtime = datetime.fromtimestamp(os.path.getmtime(f)).strftime('%Y-%m-%d %H:%M')
#os.path.getmtime(path)	返回最近文件修改时间
    flag = '/' if os.path.isdir(f)     else ''
    print('%10d  %s  %s%s' % (fsize, mtime, f, flag))
#os.path.isdir(path)	判断路径是否为目录

3.datetime模块

datetime是Python处理日期和时间的标准库。
支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。

>>> # dates are easily constructed and formatted
>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2003, 12, 2)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'

>>> # dates support calendar arithmetic
>>> birthday = date(1964, 7, 31)#
>>> age = now - birthday
>>> age.days
14368

datetime类是date和time的结合体,包括date与time的所有信息,date和time类中具有的方法和属性,datetime类都具有。

所以在我们日常的工作中,可以仅使用datetime类。
注意:datetime是模块,datetime模块还包含一个datetime类。
该类的构造函数:

datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) 

各参数的含义与date、time构造函数中的一样,但是要注意各参数的取值范围。

1、today函数 返回一个当前本地时间的datetime.datetime类的对象。
2、now([tz]) 不指定时区,返回一个当前本地时间的datetime.datetime类的对象。指定时区,返回指定时区的时间
3、fromtimestamp(timestamp[,tz]) 给定一个时间戳,返回指定时区的datetime.datetime类的对象。不指定时区,返回本地时区的datetime类对象
4、strptime(“时间字符串”,format) 将格式时间字符串转换为datetime对象
5、Datetime类—year、month、day、hour、minute、second属性
6、datetime.date() 参数是datetime.datetime类的对象,得到一个datetime.date对象
7、datetime.time() 参数是datetime.datetime类的对象,得到一个datetime.time对象
8、datetime.combime() 参数是datetime.datetime类的对象、datetime.date对象、datetime.time对象,得到一个datetime.datetime对象

作者:热情的蘑菇
来源:CSDN
原文:https://blog.csdn.net/sunjinjuan/article/details/79090521
版权声明:本文为博主原创文章,转载请附上博文链接!

4.类和对象

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例

  • 1、 创建类
    使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:

      class ClassName:
     '类的帮助信息'   #类文档字符串
     class_suite  #类体
    

    类的帮助信息可以通过ClassName.__doc__查看。

    class_suite 由类成员,方法,数据属性组成。

  • 2、类的实例化
    以下使用类的名称 Employee 来实例化,并通过 init 方法接收参数。

"创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
"创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)
  • 3、访问属性
    您可以使用点号 . 来访问对象的属性。使用如下类的名称访问类变量:
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount

5.正则表达式

Python 正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

re 模块使 Python 语言拥有全部的正则表达式功能。

compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

6.re模块

1、re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
2、re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配。
3、re.sub用于替换字符串中的匹配项。

7.http请求

  • 安装

    直接使用pip就可以安装:

    pip install requests

  • 使用

1、发送请求

import requests #导入requests,然后就可以为所欲为了

#发送get请求

r0 = requests.get("http://yunweicai.com")

#发送post请求

r1 = requests.post("http://yunweicai.com",data={key:value})

#发送post请求,带json串

json_data = {"user":"yunweicai","op":"post"}

r11 = requesets.post("http://yunweicai.com",json=json_data)

#put、delete、head、optiions请求也很简单

r = requests.put('http://yunweicai.com/put', data = {'key':'value'})

r = requests.delete('http://yunweicai.com/delete')

r = requests.head('http://yunweicai.com/get')

r = requests.options('http://yunweicai.com/get')

2、URL参数

URL 的查询字符串(query string)传递某种数据。如果你是手工构建 URL,那么数据会以键/值对的形式置于 URL 中,跟在一个问号的后面。例如, yunweicai.com/get?key=val。

requests库操作就比较优雅了,requests 允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。

payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.get("http://yunweicai.com/get", params=payload)

通过打印输出该 URL,你能看到 URL 已被正确编码:

print(r.url)

3、相应内容

通过发送请求返回的对象,我们就可以获取到服务器对我们的相应内容了。Requests 会自动解码来自服务器的内容。请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 r.text 之时,Requests 会使用其推测的文本编码。

你可以找出 Requests 使用了什么编码,并且能够使用 r.encoding 属性来改变它:

>>> r.encoding'utf-8'
>>> r.encoding = 'ISO-8859-1'

如果返回的json串,可以直接使用r.json()获取到字典对象进行操作

如果响应内容是二进制呢?

对于响应内容是非文本请求,可以使用r.content访问到内容。

例如,以请求返回的二进制数据创建一张图片,你可以使用如下代码:

>>> from PIL import Image
>>> from io import BytesIO
>>> i = Image.open(BytesIO(r.content))

4、定制请求头

有些请求需要有指定的请求头才能正确获取到内容。

headers = {'user-agent': 'my-app/0.0.1'}

r= requests.get("http://yunweicai.com",headers=headers)

5、cookies

有些请求需要依赖于cookies来完成操作,就需要从上个请求中获取到cookies然后传入下一个请求:

r0 = requests.get("http://yunweicai.com/login")

r1 = requests.post("http://yunweicai.com/asset",data={"hostname":"yunweicai",cookies= r0.cookies}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值