当前位置: 首页 > 编程日记 > 正文

corepython第九章:文件和输入输出

学习笔记:

OS模块代码示例:

 1 import os
 2 for tmpdir in ('/tmp',r'c:\users\administrator\desktop'):
 3 #如果存在括号里面的目录,则break
 4     if os.path.isdir(tmpdir):
 5         break
 6 #如果不存在,则tmpdir为空值,即False
 7 else:
 8     print 'no temp directory available'
 9     tmpdir=''
10 
11 if tmpdir:
12     os.chdir(tmpdir)    #将路径change到这个目录
13     cwd=os.getcwd() #将路径名称赋值给cwd
14     print '*** current temporary directory'
15     print cwd
16 
17     print '*** creating example directory'
18     os.mkdir('example') #在当前路径下创建一个example的文件夹
19     os.chdir('example') #切换到这个文件夹下的路径
20     cwd=os.getcwd() #将路径赋值给cwd
21     print '*** new working directory:'
22     print cwd
23     print '*** original directory listing:'
24     print os.listdir(cwd) #print example文件夹下的文件名
25 
26     print'*** creating test file:'
27     fobj=open('test','w')   #在example文件夹下创建一个test的文件,以写模式打开
28     fobj.write('foo\n')
29     fobj.write('bar\n')
30     fobj.close()
31     print '*** updated directory listing:'
32     print os.listdir(cwd)   #print example文件夹下的文件名
33 
34     os.rename('test','filetest.txt') #将test文件改名
35     print '*** updated directory listing:'
36     print os.listdir(cwd)   #print example文件夹下的文件名
37 
38     path=os.path.join(cwd,os.listdir(cwd)[0])   #将example文件夹路径和filetest.txt文件名合并,也就是filetest.txt的完整路径
39     print '*** fulle file pathname'
40     print path
41     print '*** (pathname,basename)=='
42     print os.path.split(path) #将路径分开成文件夹路径和文件名
43     print '**8 (filename,extension)=='
44     print os.path.splitext(os.path.basename(path))  #将文件名split生成一个元组,得到('filetest', '.txt')
45 
46     print '*** displaying file contents:'
47     fobj=open(path)
48     for eachline in fobj:
49         print eachline,
50     fobj.close()
51 
52     print '*** deleting test file'
53     os.remove(path) #删除此文件,因为path是此文件的完整路径
54     print '*** updated directory listing:'
55     print os.listdir(cwd) #此时应该为空
56     os.chdir(os.pardir) #返回当前路劲的父路径(上一层路径),也就是桌面
57     print '*** deleting test directory'
58     os.rmdir('example') #删除example文件夹路径
59     print '*** done'
View Code

课后习题

9-6.文件比较.写一个比较两个文本文件的程序,如果不同,给出第一个不同处的行号和列号.

 1 FA=raw_input("please input 1st file's path:")
 2 FB=raw_input("please input 2nd file's path:")
 3 file_a=open(FA,'r')
 4 file_b=open(FB,'r')
 5 a_rl=file_a.readlines()
 6 b_rl=file_b.readlines()
 7 file_a.close()
 8 file_b.close()
 9 MinRow=min(len(a_rl),len(b_rl)) #得到最小行数
10 for r in range(MinRow+1):
11     if a_rl[r]!=b_rl[r]:
12         print 'row:%d' % r+1
13         #得到第一个不同行的最小列数
14         MinCol=min(len(a_rl[r]),len(b_rl[r]))
15         for c in range(MinCol+1):
16             if a_rl[r][c] != b_rl[r][c]:
17                 print 'column:%d' % c+1
18                 break
19         break
View Code

9-9.python文档字符串.进入python标准库所在的目录,检查每个.py文件看是否有_doc_字符串,如果有,对格式进行适当的整理归类.你的程序执行完毕后,应当生成一个漂亮的清单.里边列出哪些模块有文档字符串,以及文档字符串的内容,清单最后附上那些没有文档字符串模块的名字.

 1 import os
 2 #标准库的路径
 3 dir='c:/python27/lib'
 4 #切换到此路径
 5 os.chdir(dir)
 6 #此路径下的所有文件的序列
 7 allfile=os.listdir(dir)
 8 #筛选出类型为py的文件
 9 allpy=[file for file in allfile if file[-3:]=='.py']
10 #定义字典和序列,将有doc的文件存入字典,没有doc的文件存入序列
11 py_doc={}
12 py_no=[]
13 for lj in allpy:
14     f=open(lj,'r')
15     file=f.readlines()
16     #将第一行写入doc
17     doc=file[0][3:]
18     #判定如果第一行的前三个字符为""",则有doc
19     if file[0][0:3]=='"""':
20         #将py的doc写入doc字符串
21         for r in range(1,len(file)):
22             #如果遇到下一个""",则停止写入doc字符串
23             if file[r][0:3]=='"""':
24                 break
25             doc+=file[r]
26         #以文件名为key,doc为value,存入字典
27         py_doc[lj]=doc
28     else:
29         #将没有doc的文件加入到序列中
30         py_no.append(lj)
31 #输出
32 print '***py has doc:'
33 for lj,doc in py_doc.items():
34     print '****************************************',lj,':'
35     print doc
36 print '***py has not doc:'
37 print ' '.join(py_no)
View Code

转载于:https://www.cnblogs.com/alvysinger/p/4444205.html

相关文章:

Java项目:学生管理系统(无库版)(java+打印控制台)

源码获取:博客首页 "资源" 里下载! 功能介绍: 学生成绩管理系统成绩表 用户管理操作: /*** 用户管理操作*/ Controller RequestMapping("/user") public class UserController {Autowiredprivate UserServi…

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②...

原文:构建ASP.NET MVC4EF5EasyUIUnity2.x注入的后台管理系统(12)-系统日志和异常的处理② 上一讲我们做了日志与异常的结果显示列表,这一节我们讲要把他应用系统中来。 首先我们在App.Common类库中创建一个通用类ResultHelper,这个…

爬取猫眼怦然心动电影评论

作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159 可以用pandas读出之前保存的数据: newsdf pd.read_csv(rF:\duym\gzccnews.csv) 一.把爬取的内容保存到数据库sqlite3 import sqlite3with sqlite3.connect(gzccnewsdb.sqli…

TCMalloc(Thread-Caching malloc) 基本设计原理

文章目录背景如何使用架构概览1. TCMalloc Front-end1.1 小对象和大对象的内存分配过程1.2 内存释放过程1.3 Per-CPU mode1.4 Per-thread mode1.5 per-cpu 和 per-thread 运行时内存管理算法对比2. TCMalloc Middle-end2.1 Transfer Cache2.2 Central Free List2.3 Pagemap 和 …

Java项目:控制台商城系统(java+打印控制台)

源码获取:博客首页 "资源" 里下载! 功能简介: 客户信息管理、商品信息管理、购物信息管理、退出系统 显示系统主菜单: public class SystemMenu {//显示系统主菜单public void showMainMenu(){System.out.println(&qu…

PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

PAT (Basic Level) Practise (中文)-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3&am…

初识Quartz(三)

为什么80%的码农都做不了架构师?>>> 简单作业: package quartz_project.example3;import java.util.Date;import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Job…

内存分配器设计的演进

文章目录栈内存空间是否够用系统调用申请内存最简单的内存分配器实现 -- bump allocator可扩容的 Bump alloactor通过free-list 管理的 allocator通过size-buckets 维护多个free-list 的 allocatorCache friendly allocator需要考虑更多问题的allocator性能易用性本文希望描述一…

Android OpenGL ES(十一)绘制一个20面体 .

前面介绍了OpenGL ES所有能够绘制的基本图形,点,线段和三角形。其它所有复杂的2D或3D图形都是由这些基本图形构成。 本例介绍如何使用三角形构造一个正20面体。一个正20面体,有12个顶点,20个面,30条边构成:…

Java项目:学生选课系统(java+javaweb+jdbc)

源码获取:博客首页 "资源" 里下载! 功能介绍: 用户菜单、学生管理、教师管理、课程管理、成绩排名查询 学生管理控制层: Controller RequestMapping("/student") public class StudentController {private …

Xtrabackup对mysql全备以及增量备份实施

Xtrabackup对mysql全备以及增量备份实施1.完全备份与恢复本文使用的是centos5.8 64位系统,mysql 使用5.5.35.如果要使用一个最小权限的用户进行备份,可基于以下:mysql> createuser bkuserlocalhost identified by redhat;mysql> grant …

js浅拷贝和深拷贝

浅度拷贝:复制一层对象的属性,并不包括对象里面的为引用类型的数据,当改变拷贝的对象里面的引用类型时,源对象也会改变。 深度拷贝:重新开辟一个内存空间,需要递归拷贝对象里的引用,直到子属性都…

关于 fallocate 文件系统预分配 的一些细粒度测试

文章目录Rocksdb 中的预分配Fallocate in rocksdb 性能测试Fallocate 使用 以及 对应配置的行为API 使用不同 Mode 的行为分配磁盘空间释放磁盘空间折叠/裁剪 文件内容清零文件 扩容文件Rocksdb 中的预分配 预分配文件存储空间 在存储引擎中用的还是比较频繁的,尤…

mac 使用nvm安装node

1.curl https://raw.github.com/creationix/nvm/master/install.sh | sh2。vi ~/.bash_profile 添加:source /Users/dujie/.nvm/nvm.sh nvm install 0.10.24 nvm use 0.10.24 # 默認使用 0.10.24 版本,否則每次關掉 Terminal 就得重新 nvm use 一次 $…

Java项目:人事管理系统(java+javaweb+jdbc)

源码获取:博客首页 "资源" 里下载! 功能介绍: 登录、新增、修改、离职 员工管理控制层: Controller RequestMapping("/employee") public class EmployeeController {Autowiredprivate IEmployeeService em…

转:async await 的前世今生 ; 异步 线程 多线程

写的非常好,改天搬过来

ubuntu14.04初体会

2014年4月17日ubuntu新的长期支持版14.04公布了,中国时间18日一早就能够下载到。18日晚。在我的X200上安装上了14.04,算是比較早一批体会到14.04正式版的人吧。对照12.04,14.04提升的执行速度非常明显,界面改善也是令人眼前一亮&a…

Linux 下获取本机所有网卡 以及 网卡对应ip 列表

简单record 一下 #include <arpa/inet.h> // struct sockaddr_in #include <errno.h> #include <net/if.h> // struct ifreq and struct if_nameindex #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/i…

Java项目:植物大战僵尸(java+swing)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能简介&#xff1a; 植物大战僵尸、冒险模式、生存模式、解谜模式 小车服务类&#xff1a; public class CarThread extends Thread{private boolean flagtrue;private int x;private int y;private JL…

秋实大哥の恋爱物语

//裸kmp&#xff0c;劳资居然不会写&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 题意&#xff1a;中文题面自己看 解&#xff1a;差分裸kmp 因为可以上下移动&#xff0c;所以只要变化趋势相符就行&#xff0c;于是我们先做一个差分&#xff0c…

《马哥出品高薪linux运维教程》wingkeung学习笔记-linux基础入门课程5

命令&#xff1a;内部命令&#xff1a;由shell程序自带的命令叫做内部命令&#xff1b;外部命令&#xff1a;在系统的某个路径下&#xff0c;有一个与命令同名的可执行程序叫做外部命令。查看内外部命令的命令&#xff1a;type 命令命令选项&#xff1a;用于调整命令执行行为的…

八、LaTex中的表格

转载于:https://www.cnblogs.com/invisible2/p/10813964.html

基于持久内存的 单机上亿(128B)QPS -- 持久化 k/v 存储引擎

文章目录性能数据设计背景设计架构Hash 索引结构 及 PMEM空间管理形态基本API 及 实现API初始化流程写流程读流程删除流程PMEM Allocator设计主要组件空间分配流程空间释放图数据库 on KVDK 性能性能数据 这个kv 存储引擎是持久化的存储引擎&#xff0c;存储介质是PMEM&#x…

SCALA当的trait

不是特别懂&#xff0c;但感觉和RUBY当中的MIX-IN功能有几分相似&#xff0c;这又扯到了多重继承及JAVA当中的接口虚拟类了。。 package com.hengheng.scalaclass UseTrait {} trait Logger {def log(msg : String) {println("log : " msg)} } trait ConsoleLogger …

Java项目:贪吃蛇游戏(java+swing)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能简介&#xff1a; 贪吃蛇游戏 大嘴鱼洁面类。完成大嘴鱼的界面的绘制: /*** 大嘴鱼洁面类。完成大嘴鱼的界面的绘制。*/ public class BigMouthFishFrame extends JFrame{private FishPool pool null;…

使用Ext Form自动绑定Html中的Form元素

2019独角兽企业重金招聘Python工程师标准>>> Java代码 //把ext 对象绑定在Html Form元素时的ext属性中 Ext.override(Ext.Component, { initComponent :function(){ this.on(render, function(){ if(this.el) Ext.getDom(this.el).ext this; …

Directx11 教程(2) 基本的windows应用程序框架(2)

Directx11 教程(2) 基本的windows应用程序框架(2) 原文:Directx11 教程(2) 基本的windows应用程序框架(2)在本教程中&#xff0c;我们把前面一个教程的代码&#xff0c;进行封装。把初始化函数&#xff0c;Run函数&#xff0c;窗口回调函数&#xff0c;ShutdownWindows函数等封…

Rocksdb的事务(二):完整事务体系的 详细实现

文章目录1. 基本事务操作1.1 TransactionDB -- Pessimistic1.2 OptimisticTransactionDB1.3 Read Uncommitted1.4 SavePoint 回滚部分事务操作1.5 SetSnapshot1.6 GetForUpdate1.7 RepeatableRead2. 实现2.1 WBWI(write batch with index) & WB(write batch)2.2 Pessimisti…

关于学习编程的一些看法

1、看书&#xff0c;书上的代码一串一串的对吧&#xff1f;是不是很不好记&#xff1f;是不是觉得如果自己把这些代码都敲一遍很浪费时间&#xff1f;其实对于一些完全没有任何基础的人来说&#xff0c;全部敲一遍不失为一种简单的入门方法。对于有一点基础的人来说&#xff0c…

Java项目:日历万年历(java+swing)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能简介&#xff1a; 万年历 启动类&#xff1a; public class CalendarMainClass { public static void main(String args[]) { try { UIManager.setLookAndFeel("com.sun.java.swing.pl…