第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

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳