公司网站后台维护怎么做,店铺推广方式有哪些,什么是营销型网站?,东阳企业网站微商城建设一. Python 读写 创建文件Python中对文件,文件夹(文件操作函数)的操作需要涉及到OS 模块和 shutil 模块 .一) . OS模块 的基本操作方法功能os.getcwd()得到当前工作目录,及当前Python脚本工作的目录路径os.listdir()返回指定目录下的所有文件和目录名:os.remoce()函数用来删除一…一. Python 读写 创建文件Python中对文件,文件夹(文件操作函数)的操作需要涉及到OS 模块和 shutil 模块 .一) . OS模块 的基本操作方法功能os.getcwd()得到当前工作目录,及当前Python脚本工作的目录路径os.listdir()返回指定目录下的所有文件和目录名:os.remoce()函数用来删除一个文件os.removedirs(rC:\python)删除多个目录os.path.isfile()验证给出的路径是否是一个文件os.patn.isdir()验证给出的路径是否是一个目录os,path.isabs()判断是否是绝对路径os.path.exists()检验给出的路径是否真的存在os.path.split()返回一个路径的目录名和文件名os.path.splitext()分离扩展名os.path.dirname()获取路径名os.path.basename()获取文件名os.system()运行shell命令os.getenv()与os.putenv()读取和设置环境变量os.linesep给出当前平台使用的行终止符 Windows使用’\r\n’Linux使用’\n’而Mac使用’\r’os.name指示你正在使用的平台 对于Windows它是’nt’而对于Linux/Unix用户它是’posix’os,rename(old,new)重命名os.mekedirs(r“c:\python\test”)创建多级目录os.makedir()创建单个目录os.stat(file)获取文件属性os.chmod(file)修改文件权限与时间戳os.exit()终止当前进程os.path.getsize(filename)获取文件大小os.mknod(test.txt)创建空文件fpopen(test.txt,w)直接打开一个文件,如果不存在则创建文件二) shutil模块的基本操作1 .简介:shutil : 高级的 文件、文件夹、压缩包处理模块2 . 使用1) shutil.copyfileobj(文件1,文件2) :将文件1的数据复制copy给文件2.import shutilf1 open(1.txt,encodingutf-8)f2 open(2.txt,encodingutf-8)shutil.copyfileobj(f1,f2)2) shutil.copyfile(文件1,文件2) : 不用打开文件名进行覆盖copy.import shutilshutil.copyfile(1.txt,3.txt)2) shutil.copymode(src,dst) (前提是dst文件存在不然报错)仅拷贝权限.内容,组,用户均不变import osimport shutilstat1 os.stat(2.txt)print(2.txt的属性:,stat1)print(2.txt的mode属性:,stat1.st_mode)stat2 os.stat(520.py)print(520.py的属性:,stat2)print(520.py的mode属性:,stat2.st_mode)shutil.copymode(2.txt,520.py)stat3 os.stat(520.py)print(shutil.copymode(2.txt,520.py)后520.py的属性:,stat3)print(shutil.copymode(2.txt,520.py)后520.py的mode属性:,stat3.st_mode)2.txt的属性: os.stat_result(st_mode33323, st_ino949061, st_dev2049, st_nlink1, st_uid1000, st_gid1000, st_size91, st_atime1534563978, st_mtime1534563620, st_ctime1534568796)2.txt的mode属性: 33323520.py的属性: os.stat_result(st_mode33204, st_ino948799, st_dev2049, st_nlink1, st_uid1000, st_gid1000, st_size46, st_atime1534569597, st_mtime1534569597, st_ctime1534569597)520.py的mode属性: 33204shutil.copymode(2.txt,520.py)后520.py的属性: os.stat_result(st_mode33323, st_ino948799, st_dev2049, st_nlink1, st_uid1000, st_gid1000, st_size46, st_atime1534569597, st_mtime1534569597, st_ctime1534569647)shutil.copymode(2.txt,520.py)后520.py的mode属性: 333233) . shutil.copystat(src, dst) 仅拷贝状态信息,即文件属性,包括:mode bits, atime, mtime, flagsimport osimport shutilstat1 os.stat(2.txt)print(2.txt的属性:,stat1)print(2.txt的stat属性:,stat1.st_mode,stat1.st_atime,stat1.st_mtime,stat1.n_fields)stat2 os.stat(521.py)print(521.py.py的属性:,stat2)print(521.py.py的stat属性:,stat2.st_mode,stat2.st_atime,stat2.st_mtime,stat2.n_fields)shutil.copystat(2.txt,521.py)stat3 os.stat(521.py)print(shutil.copystat(2.txt,521.py)后521.py的属性:,stat3)print(shutil.copystat(2.txt,521.py)后521.py的stat属性:,stat3.st_mode,stat3.st_atime,stat3.st_mtime,stat3.n_fields)2.txt的属性: os.stat_result(st_mode33323, st_ino949061, st_dev2049, st_nlink1, st_uid1000, st_gid1000, st_size91, st_atime1534563978, st_mtime1534563620, st_ctime1534568796)2.txt的stat属性: 33323 1534563978.802531 1534563620.6685243 19521.py.py的属性: os.stat_result(st_mode33204, st_ino949087, st_dev2049, st_nlink1, st_uid1000, st_gid1000, st_size31, st_atime1534572967, st_mtime1534572967, st_ctime1534572967)521.py.py的stat属性: 33204 1534572967.3448722 1534572967.3448722 19shutil.copystat(2.txt,521.py)后521.py的属性: os.stat_result(st_mode33323, st_ino949087, st_dev2049, st_nlink1, st_uid1000, st_gid1000, st_size31, st_atime1534563978, st_mtime1534563620, st_ctime1534572967)shutil.copystat(2.txt,521.py)后521.py的stat属性: 33323 1534563978.802531 1534563620.6685243 194) . shutil.copytree(src, dst, symlinksFalse, ignoreNone) 递归的去拷贝文件夹shutil.ignore_patterns(patterns)(忽略哪个文件有选择性的拷贝)shutil.copytree(folder1, folder2, ignoreshutil.ignore_patterns(*.pyc, tmp*))shutil.copytree(f1, f2, symlinksTrue, ignoreshutil.ignore_patterns(*.pyc, tmp*))5). shutil.rmtree(path[, ignore_errors[, onerror]]) 递归的去删除文件shutil.rmtree(folder1)6). shutil.move(src, dst) 递归的去移动文件它类似mv命令其实就是重命名。shutil.move(folder1, folder3)7). shutil.make_archive(base_name, format,...)创建压缩包并返回文件路径例如zip、tar创建压缩包并返回文件路径例如zip、tarbase_name 压缩包的文件名也可以是压缩包的路径。只是文件名时则保存至当前目录否则保存至指定路径 如www 保存至当前路径 如/Users/wupeiqi/www 保存至/Users/wupeiqi/format 压缩包种类“zip”, “tar”, “bztar”“gztar”root_dir 要压缩的文件夹路径(默认当前目录)owner 用户默认当前用户group 组默认当前组logger 用于记录日志通常是logging.Logger对象#将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录import shutilret shutil.make_archive(wwwwwwwwww, gztar, root_dir/Users/wupeiqi/Downloads/test)#将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录import shutilret shutil.make_archive(/Users/wupeiqi/wwwwwwwwww, gztar, root_dir/Users/wupeiqi/Downloads/test)shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的详细import zipfile# 压缩z zipfile.ZipFile(laxi.zip, w)z.write(a.log)z.write(data.data)z.close()# 解压z zipfile.ZipFile(laxi.zip, r)z.extractall()z.close()import tarfile# 压缩tar tarfile.open(your.tar,w)tar.add(/Users/wupeiqi/PycharmProjects/bbs2.log, arcnamebbs2.log)tar.add(/Users/wupeiqi/PycharmProjects/cmdb.log, arcnamecmdb.log)tar.close()# 解压tar tarfile.open(your.tar,r)tar.extractall() # 可设置解压地址tar.close()OS模块 shutil模块 SyS模块的区别模块功能OS模块主要是与操作系统的交互shutil模块高级的文件文件夹压缩包处理模块,也是与系统的交互SyS模块主要是与Python解释器的交互二. 文件的读写操作一) 基本知识打开文件的模式打开文件的方式r以只读的方式打开文件r可读写,文件不存在时会报错rb只读二进制rb可读写二进制,文件不存在,回报io错误w以只写的方式打开w读写的形式打开,将原有的内容擦处wb只读写二进制wb只写二进制a写在末端a以附加的形式打开可读写的文件ab以只写二进制形式打开ab以二进制方式追加二). 打开文件的方法方法一f open(file,modle,encodingutf-8)content f.read()lines file.readlines()for line in lines:print(line)f.close()精简方式with open(test.txt,a,encodingutf-8,errorignore) as file:file.read() # 可以添加每次读取的字节数file.weite()# 不需要close,也不需要异常处理异常,自动关闭文件的其他操作F.flush()#把缓冲区的内容写入硬盘F.fileno()#返回一个长整型的”文件标签“F.isatty()#文件是否是一个终端设备文件(unix系统中的)F.tell()#返回文件操作标记的当前位置以文件的开头为原点F.next()#返回下一行并将文件操作标记位移到下一行。把一个file用于for ... in file这样的语句时就是调用next()函数来实现遍历的。F.seek(offset[,whence])#将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的一般为正数。但如果提供了whence参数就不一定了whence可以为0表示从头开始计算1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意如果文件以a或a的模式打开每次进行写操作时文件操作标记会自动返回到文件末尾。F.truncate([size])#把文件裁成规定的大小默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大依据系统的不同可能是不改变文件也可能是用0把文件补到相应的大小也可能是以一些随机的内容加上去。三). 读写 csv文件的操作1. 读操作import csvwith open(test.csv,r,encodingutf-8) as f:reader csv.reader(f,excel,delimiter;,quotingcsv.QUOTE_MINIMAL)for row in reader:print(row)2. 写操作import csvwith open (xxx.csv,a,newline ) as f:writer csv.write(f,delimiter;,quotechar|,quotingcsv.QUOTE_MINIMAL)writer.writerow([Tome]*5[End Tom])四). 读写字典的操作1. 读操作import csvwith open(test.csv) as csvfile:reader csv.DictReader(csvfile)for row in reader:print(row[first_name],row[last_name])2. 写操作import csvwith open(test.csv,w) as csvfile:fieldnames [first_name,last_name] # 写入文件的列名writer csv.DictWriter(csvfile,fieldnamesfieldnames)writer.writerheader()writer.writerow({first_name:Backes,last_name:Beans})demoimport csvwith open(test.csv,w) as csvfile:writer csv.writer(csvfile)# 先写入columns_namewriter.writerow([index,a_name,b_name])# 写入多行用writerows# 可以加入一个for循环写入writer.writerows([0,1,3],[1,2,3],[2,3,4])test# 功能: 讲一字典写入到csv文件中# 输入: 文件名称,数据字典import csvdef createDictCSV(filename,dataDict{}):with open(fileName,wb) as csvFile:csvWriter csv.writer(csvFile)for k,v in dataDict.iteritens():csvWriter.writerow([k,v])csvFile.close()三. json 解析一) . JSON 简介1. JSON (JavaScript Object Notation),是一种数据交互格式.Json之前大家都用 XML 传递数据。XML 是一种纯文本格式所以适合在网络上交换数据但是 XML 格式比较复杂终于道格拉斯·克罗克福特(Douglas Crockford)发明了JSON 这种超轻量级的数据交换格式。2. JSON 如何使用数据格式JSON 实际上是 JavaScript的一个子集,所以JSON 的数据格式和JavaScript 是对应的:number JS numberboolean JS booleanstring JS string //null JS nullarray JS Array 的表达方式 []object JS {} 表达式3. 序列化与反序列化1). JSON.stringify() # 将对象序列化为JSON字符串JSON.stringify({},[], )参数一: 要序列化的数据(object)参数二:控制对象的键值,只想输出制定的属性, 传入一个数组参数三 : 序列化后,打印输出的格式(一个Tab,可跟直观的查看JSON)2).JSON.parse() # 讲JSON数据解析为JavaScript对象JSON.parse(json.data) # 传入json字符串把 JavaScript 变成 Json 就是把这个对象序列化为Json字符串然后才可以通过网络传递.如果我们收到一个JSON格式的字符串只需要把它反序列化成一个JavaScript对象就可以在JavaScript中直接使用这个对象了。二). JSON数据格式的形式1. 数组形式[ ][{id : 1 ,naem : xiaoming ,},{id : 2,naem : tom ,}]2. 对象形式// 前后端分离,推荐后端返回给前端数据格式{status : 200 ,msg : success ,data : [{id : 1 ,naem : xiaoming ,},{id : 2,naem : tom ,}]}3. 数组对象混合三). 读写JSON常用的函数1. json.dumps()和json.loads() 是json格式处理函数1). json.dumps()函数是将一个python数据类型列表进行json格式的编码,json.dumps()函数是将字典转化为字符串2). json.loads()函数是将json格式数据转换过为字典,可以这么理解,json.loads()函数是将字符串转化为字典,用字典的方法来取值.2. 实例说明1). json.dumps()json.dumps()用于将dict类型的数据转成str因为如果直接将dict类型的数据写入json文件中会发生报错因此在将数据写入时需要用到该函数。import jsonname_emb {a:1111,b:2222,c:3333,d:4444,}jsObj json.dumps(name_emb)print(name_emb)print(jsObj)print(type(name_emb))print(type(jsObj)){a: 1111, c: 3333, b: 2222, d: 4444}{a: 1111, c: 3333, b: 2222, d: 4444}json.dump()用于将dict类型的数据转成str并写入到json文件中。下面两种方法都可以将数据写入json文件import jsonname_emb {a:1111,b:2222,c:3333,d:4444}emb_filename (emb_json.json)# 方法一jsObj json.dumps(name_emb)with open(emb_filename,w) as f:f.write(jsObj)f.close()# 方法 二json.dump(name_emb,open(emb_filename,w))2). json.loads()json.loads()用于将str类型的数据转成dict。import jsonname_emb {a:1111,b:2222,c:3333,d:4444,}jsDumps json.dumps(name_emb)jsLoads json.loads(jsDumps)print(name_emb)print(jsDumps)print(jsLoads)print(type(name_emb))print(type(jsDumps))print(type(jsLoads))# a变成了a是因为发生了类型转换str会转换成unicode{a: 1111, b: 2222, c: 3333, d: 4444}{a: 1111, b: 2222, c: 3333, d: 4444}{a: 1111, b: 2222, c: 3333, d: 4444}json.load()用于从json文件中读取数据。import jsonemb_filename (./emb_json.json)jsObj json.load(open(emb_filename))print(jsObj)print(type(jsObj))for key in jsObj.keys():print(key:%s value: %s %(key,jsObj.get(key))){a: 1111, b: 2222, c: 3333, d: 4444}key:a value: 1111key:b value: 2222key:c value: 3333key:d value: 4444