第12次全天课笔记 20181014 目录操作

2023-10-19 10:20

本文主要是介绍第12次全天课笔记 20181014 目录操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第12次全天课-20181014

 

习题1读一个文件,包含英文句子,请统计共多少个不重复的单词,并且在另外一个文件中打印每个单词以及它的出线次数


#第一步:读文件
#方法1:open
#方法2:with

#难点1:怎么把英文句子中的所有标点去掉。
#数字也要替换掉。

import string
with open("e://a.txt","r") as fp:
    content = ""
    for line in fp:
        s = line
        for i in string.punctuation:
            s=s.replace(i," ")
        content += s

print (content)

word_list =  content.split()
print(word_list)
print("一共%s个不重复的单词:" %len(set(word_list)))
word_count = {}
for i in word_list:
    if i in  word_count:
        word_count[i]+=1
    else:
        word_count[i]  =1

print (word_count)

with open("e://b.txt","w") as fp:
    fp.write("一共%s个不重复的单词:" %len(set(word_list))+"\n")
    for key,value in word_count.items():
        fp.write("%s单词出现了%s次" %(key,str(value))+"\n")


习题2,写个记账程序,每天收入多少,支出多少,总额剩多少,使用序列化方式保存信息

 

#写个记账程序,每天收入多少,支出多少,

#总额剩多少,使用序列化方式保存信息

 

import pickle

fp = open("e:\\a.txt","rb")

try:

    income=pickle.load(fp)

    spend=pickle.load(fp)

    deposit=pickle.load(fp)

except:

    income = []

    spend = []

    deposit= 0

fp.close()

 

#value|specification

while 1:

    content = input("请输入指令:")

    if content.find("exit")!=-1:

        break

   

    if content.find("|")==-1:

        print("data format is value|specification")

        print("please input again!")

        continue

 

    value = content.split("|")[0]

    try:

        value=float(value)

    except:

        print("data format is value|specification")

        print("data format is value must be a number")

 

    if value> 0:

        income.append(content)

        deposit+=value

    elif value==0:

        print("空间有限,不存0")

    else:

        spend.append(content[1:])

        deposit+=value

 

print (income)

print (spend)

print (deposit)

 

fp = open("e:\\a.txt","wb")

pickle.dump(income,fp)

pickle.dump(spend,fp)

pickle.dump(deposit,fp)

 

fp.close()

 

 

with open("e:\\a.txt",encoding="utf-8") as fp:

    for line in fp:

        print (line)

        file_name = line.split("|",1)[0]

        file_content = line.split("|",1)[1]

        with open("e:\\test\\"+file_name+".txt","w") as fp1:

            fp1.write("|"+file_content+"\n")

 

with open("D:\\up\\1014\\data.log","r") as fp:

    for line in fp:

        filename = line[:14]

        filecontent = line[14:]

        with open("D:\\up\\1014\\"+ filename+".txt","w") as fp2:

            fp2.write(filecontent)

 

 

目录操作:

 

>>> os.chdir("subprocesstest")

>>> os.getcwd()

'e:\\test\\subprocesstest'

 

>>> import os .path

>>> os.path.isdir("subprocesstest")

True

>>> os.path.isfile("subprocesstest")

False

os.path.exists("e:\\a.txt")

 

windows下面

>>> os.name

'nt'

>>> os.linesep

'\r\n'

>>> os.pathsep

';'

>>> os.sep

'\\'

>>> os.mkdir("subprocess1 ")

>>> os.makedirs("subprocess1/test/test1")

>>> os.removedirs("subprocess1/test/test1")

>>> os.rmdir("subprocess1 ")

 

 

shutil. rmtree  清空非空和空的所有

 

Linux   删除所有的rm –rf /

 

小练习:删除一个你目录下的所有.txt文件

import os

os.chdir("D:\\up\\test")

pathname = os.listdir()

for i in pathname:

    if i[-4:] =”.txt”:

        os.remove("D:\\up\\test\\"+i)

 

 

时间管理:

1 所有要干的事记录下来(工作、学习、生活的、感情的)

2 打上权重,要事优先。(这可以点自己聚焦)

3 学习(早晨、晚上)

4 效率第一(累了要休息)

5 目标导向:写30行(做5道题)

少睡、早晨起来(买衣服)

办公司对面去。1500*12=1.8万

2小时。1年,涨薪:5k*12=6万

 

6 工作的时候,大部分的im关掉。定时打开。

1小时看一次。半小时。

7 每天休息和锻炼:10分钟--慢跑

 

 

>>> import os
>>> os.rename("e:\\b.txt","e:\\b1.txt")

 

 

算法:遍历这个目录,取到所有文件

每个文件用stat取到创建时间

用创建时间和当前时间去比对,是否小于3600

 

import os
import time
import os.path
current_timestamp = time.time()
result = []
for i in os.listdir("e:\\test"):
    if os.path.isfile("e:\\test"+"\\"+i):
        print ("e:\\test"+"\\"+i)
        if current_timestamp-os.stat("e:\\test"+"\\"+i).st_ctime <=3600:
            result.append("e:\\test"+"\\"+i)

print (result)

 

修改访问时间和修改时间

#encoding=utf-8

import os

os.utime(r'e:\b.txt',(1375448978,1369735977))

fileinfo = os.stat(r'e:\b.txt')

print ("access time of b.txt : %s \n modified time of b.txt: %s"  % (fileinfo.st_atime,fileinfo.st_mtime))

 

os.system()

运行shell命令

 

>>> os.chdir("/home/wxh")

>>> os.system("ls")

 

os.environ

获取系统环境变量。

 

运行shell命令,并返回一个文件对象。然后通过操作文件的方法去操作这个

文件对象。

>>> for i in os.popen("ls"):
...     print(i)

 

>>> import os.path
>>> os.path.join("e:\\test","a.txt")
'e:\\test\\a.txt'
>>> os.path.join("test","a.txt")
'test\\a.txt'
>>> os.path.join("e:\\test","e:\\a.txt")
'e:\\a.txt'
>>> os.path.join(r"e:\test",r"e:\a.txt")
'e:\\a.txt'

 

遍历某个路径下所有的目录和文件。

os.walk(top, topdown=True, οnerrοr=None, followlinks=False)

 

#encoding=utf-8
import os

dir_count=0
file_count=0
for root, dirs, files in os.walk("e:\\testdemo",topdown=False) :
    print(u"当前目录:",root) #打印目录绝对路径
    for name in files :
        print(u'文件名:',os.path.join(root,name) )#打印文件绝对路径
        file_count+=1
    for name in dirs :
        print(u'目录名:',name) #打印目录绝对路径
        dir_count+=1

print ("目录个数%s" %dir_count)
print ("文件个数%s" %file_count)

 

小练习,把所有的txt文件干掉。

新建一个空的子目录xxx,放在某个层级下,,把它删掉

 

#encoding=utf-8

import os

import os.path

 

dir_count=0

file_count=0

for root, dirs, files in os.walk("e:\\testdemo",topdown=True) :

    print(u"当前目录:",root) #打印目录绝对路径

    for name in files :

        print(u'文件名:',os.path.join(root,name) )#打印文件绝对路径

        if name[-4:]==".txt":

            os.remove(os.path.join(root,name))

        file_count+=1

    for name in dirs :

        print(u'目录名:',name) #打印目录绝对路径

        if name =="xxx":

            os.rmdir(os.path.join(root,name))

        dir_count+=1

 

print ("目录个数%s" %dir_count)

print ("文件个数%s" %file_count)

 

os.path.abspath(path)

拼当前路径

 

 

将某个文件下的目录和文件都打印出来

#encoding=utf-8

import os

import os.path

 

def get_dir_abs_dirpath(dir_path):

    result = []

    for root,dirs,files in os.walk(dir_path):

        for i in dirs:

            result.append(os.path.join(root,i))

    return result

 

def get_dir_abs_filepath(dir_path):

    result = []

    for root,dirs,files in os.walk(dir_path):

        for i in files:

            result.append(os.path.join(root,i))

    return result

 

print (get_dir_abs_dirpath("e:\\testdemo"))

print (get_dir_abs_filepath("e:\\testdemo"))

 

os.path.split(path)

将path分割成目录和文件名(事实上,如果你完全使用目录,它也会将最后一个目录作

为文件名而分离,同时它不会判断文件或目录是否存在),并存于元组中返回。

 

代码示例:

#encoding=utf-8

import os

pathTup = os.path.split(r'c:\gloryroad.txt')

print (pathTup)

 

 

>>> os.path.split("e:\\test\\test\\a.py")

('e:\\test\\test', 'a.py')

>>> os.path.dirname("e:\\test\\test\\a.py")

'e:\\test\\test'

>>> os.path.basename("e:\\test\\test\\a.py")

'a.py'

 

>>> os.path.splitext("e:\\test\\test\\a.py")

('e:\\test\\test\\a', '.py')

 

 

统计某个路径下的后缀名

#统计一下某个目录下的,所有不同后缀名的个数,

#以及哪些具体的后缀名

 

def get_postfix_name_count(dir_path):

    result = []

    for root,dirs,files in os.walk(dir_path):

        for i in files:

            postfix_name=os.path.splitext(os.path.join(root,i))[1]

            if postfix_name!="":

                result.append(postfix_name[1:])

    return list(set(result)),len(set(result))

 

print (get_postfix_name_count("d:\\community"))

 

 

os.path.exists(path)

判断path是否存在,如果存在返回True,否则返回False。

>>> if not os.path.exists("e:\\b.txt"):

...     with open("e:\\b.txt","w"):

...         pass

...

 

os.path.isabs(path)

判断path是否是绝对路径,如果是返回True,否则返回False。但不会判断实际在不在。

>>> os.path.isabs("e:\\text")
True

 

os.path.isfile(path)

判断path是否是文件,如果是返回True,否则返回False。

 

os.path.isdir(path)

判断path是否是目录,如果是目录返回True,否则返回False。

 

os.path.normpath(path)

将path转换成规范的文件路径。

>>> os.path.normpath("e://a.txt")
'e:\\a.txt'

 

os.path.getsize(name)

获得文件大小,如果name是目录返回结果是0L或者4096L;如果name代表的目录或文件不存在,会报WindowsError异常。返回字节数。

 

os.path.getatime(filename)

返回文件的最后访问时间,返回的是时间戳。

代码示例:

#coding=utf-8

import os

import time

#获取文件最后访问时间

lastTime = os.path.getatime(r"d:\gloryroad\a.py")

print (lastTime)

#将时间戳转成时间元组

formatTime = time.localtime(lastTime)

print (formatTime)

#格式化时间元组为时间字符串

print (time.strftime("%Y-%m-%d %H:%M:%S",formatTime))

os.path.getctime(filename)

以时间戳的形式返回文件或目录的创建时间,在Unix系统上是文件最近更改的时间,在Windows上是文件或目录的创建时间。

 

os.path.getmtime(filename)

在Windows上是文件或目录的修改时间。

 

sys 模块

sys.argv,不需要在程序里面传参

#coding=utf-8
import os
import time
import sys

print (sys.argv)

def add(a,b):
    return a+b

if not len(sys.argv) ==3 :
    print("参数数量不对!请指定两个数字参数")
    sys.exit()
try:
    float(sys.argv[1])
    float(sys.argv[2])
except:
    print("参数类型不对!请指定两个数字参数")
    sys.exit()

print (add(float(sys.argv[1]),float(sys.argv[2])))

 


#coding=utf-8
import os
import sys

def readfile(filename):
    '''Print a file to the standard output.'''
    f = open(filename,encoding="utf-8")
    while True:
          line = f.readline()
          if len(line) == 0:
             break
          print (line,)
    f.close()

if len(sys.argv) ==2 and sys.argv[1].startswith('--'):
    pass
elif  len(sys.argv) <3:
   print ('No action specified.')
   sys.exit()

for id,i in enumerate(sys.argv):
    print ("第%s个参数:%s" %(id,i))

# Script starts from here

if sys.argv[1].startswith('--'):
    option = sys.argv[1][2:]
    # fetch sys.argv[1] but without the first two characters
    if option == 'version':
        print('Version 1.2')
    elif option == 'help':
        print('''"
           This program prints files to the standard output.
           Any number of files can be specified.
           Options include:
           --version : Prints the version number
           --help    : Display this help''')
    else:
        print('Unknown option.')
        sys.exit()
else:
    for filename in sys.argv[1:]:
        readfile(filename)

 

 

枚举

>>> for id ,i in enumerate(range(10,20)):
...     print(id,i)

 

转载于:https://www.cnblogs.com/xuefeifei/p/10062656.html

这篇关于第12次全天课笔记 20181014 目录操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/239144

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个