返回顶部
首页 > 资讯 > 后端开发 > Python >Python第六周 学习笔记(3)
  • 405
分享到

Python第六周 学习笔记(3)

学习笔记六周Python 2023-01-31 07:01:50 405人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

1.指定一个源文件,实现copy到目标目录 个人实现: def filecopy(filename:str, cp_filename:str): ''' Author: lijl Description: 复制文


1.指定一个源文件,实现copy到目标目录

个人实现:

def filecopy(filename:str, cp_filename:str):
    '''
    Author: lijl
    Description: 复制文件

    type filename: str
    type cp_filename: str
    rtype: int
    '''
    try:
        with open(cp_filename, 'w+') as f1, open(filename, 'r') as f2:
            f1.write(f2.read())
    except Exception as e:
        print('Exception :', e)
        return 1
    return 0

2.有一个文件,对其进行单词统计,不区分大小写,并显示单词重复最多的10个单词

个人实现:

def Word_count(filename:str, topN:int):
    '''
    Author: lijl
    Description: 统计单词数量

    type filename: str
    type topN: int
    rtype: None
    '''

    result = {}
    table = str.maketrans('.,/\()+=:\'"', '           ')

    #处理非字母字符&插入字典
    with open('sample.txt', 'r') as f:
        for i in f:      
            s = i.lower().translate(table).split()
            for j in s:
                if j in result.keys():
                    result[j] += 1
                else:
                    result[j] = 1

    #将字典按照key排序
    topN_lst = sorted(result, key = lambda x:result[x], reverse=True)

    for i in range(topN):
        print('{}, {}'.fORMat(topN_lst[i], result[topN_lst[i]]))

    return

答案参考代码:

3.对sample文件进行不区分大小写的单词统计

  • 要求用户可以排除一些单词的统计
    个人实现:

    def word_count(filename:str, topN:int, *args):
    '''
    Author: lijl
    Description: 统计单词数量
    
    type filename: str
    type topN: int
    type args: strs 
    rtype: None
    '''
    
    result = {}
    table = str.maketrans('.,/\()+=:\'"', '           ')
    
    #处理非字母字符&插入字典
    with open(filename) as f:
        for i in f:      
            s = i.lower().translate(table).split()
            for word in s:
                if word not in args:
                    result[word] = result.get(word, 0) + 1
    
    #将字典按照key排序
    topN_lst = sorted(result.items(), key = lambda result:result[1], reverse=True)
    
    for k, v in topN_lst[:topN]:
        print('{}, {}'.format(v, k))
    
    return

答案参考代码;

4.有一个配置文件test.ini,将其转换成JSON格式文件

个人实现:

from configparser import ConfigParser

def ini2json(filename):
    '''
    Author: lijl
    Description: ini转json

    type filename: str
    rtype: str
    '''

    section_dict = {}
    section_list = []

    cfg = ConfigParser()
    cfg.read(filename)

    if len(cfg.items('DEFAULT')) != 0:
        section_list.append('DEFAULT')

    section_list += cfg.sections()

    for section_name in section_list:
        section_dict[section_name] = cfg.items(section_name)

    return json.dumps(section_dict)

答案参考代码:

5.实现ls命令功能,实现-l、-a和--all、-h选项

  • 实现显示路径下的文件列表
  • -a和-all 显示包含.开头的文件
  • -l 详细列表显示
  • -h 和-l配合,人性化显示文件大小,例如1K、1G、1T等,可以认为1G=1000M
  • c 字符;d 目录;- 普通文件;l 软链接;b 块设备;s Socket文件;p pipe文件,即FIFO
  • -rw-rw-r-- 1 python Python 5 Oct 25 00:07 test4
  • mode 硬链接 属主 属组 字节 时间 文件名
  • 按照文件名排序输出,可以和ls的顺序不一样,但要求文件名排序
  • 要求详细列表显示时,时间可以按照“年-月-日 时:分:秒” 格式显示

个人实现:

import os
import argparse
import datetime
from pathlib import Path

parser = argparse.ArgumentParser(add_help=False)
parser.add_argument("dir", type=str, nargs='?', default=Path.cwd())
parser.add_argument("-a","--all", action ='store_true')
parser.add_argument("-l", action ='store_true')
parser.add_argument("-h", "--human", action ='store_true')
args = parser.parse_args()

if args.dir:
    dr = Path(args.dir)

MODE_DICT = {'0':'---', '1':'--x', '2':'-w-', '3':'-wx', '4':'r--', '5':'r-x', '6':'rw-', '7':'rwx'}
FILE_DICT = {'1':'-','4':'d', '2':'c', '6':'b', '3':'l', '5':'s','7':'p'}

#无参数或只有-h
if (not args.l and not args.human) or not args.l:
    for i in sorted(os.listdir(dr)):
        print(i, end=' ')
    print()

#有-l参数
if args.l:
    for i in sorted(os.listdir(dr)):
        file_path = dr / i
        #如果没有-a,不显示隐藏文件
        if not args.all and i.startswith('.'):
            continue

        stat = os.lstat(file_path)
        st_mode = str(oct(stat.st_mode))
        mtime = datetime.datetime.fromtimestamp(stat.st_mtime).strftime('%Y-%m-%d %H:%M:%S')

        #计算文件类型
        new_file_kind = FILE_DICT[st_mode[2]]

        #计算权限
        mode=st_mode[-3:]
        new_mode = ''

        for m in mode:
            new_mode += MODE_DICT.get(m)

        #人性化显示文件大小
        if args.human:
            size = stat.st_size
            interval = 1024
            for j in ['k', 'M', 'G', 'T']:
                temp_size = stat.st_size // interval
                if temp_size > 0:
                    size = str(round(stat.st_size / interval, 1)) + j 
                else:
                    break
                interval = interval ** 2

        print('{}{} {:>2} {} {} {} {} {}'.format(new_file_kind, new_mode, stat.st_nlink, stat.st_uid, stat.st_gid, size if args.human else stat.st_size, mtime, i))
    print()

答案参考代码:

6.匹配一个0-999之间的任意数字
个人实现:

\b[0-9]{0,3}\b

答案参考代码:

^([1-9]\d\d?|\d)(?!\d)

7.匹配合法IP地址
个人实现:

^(?:(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])$

答案参考代码:

(?:(\d{1,3}).){3}(\d{1,3})

可以把数据提出来后,交给IP地址解析库处理
正则的验证只是一个初步的筛选,把明显的错误过滤掉

import socket
nw = socket,inet_aton('192.168.05.001')
print(nw, socket.inet_ntoa(nw))

8.选出含有ftp的链接,且文件类型时gz或者xz的文件名
个人实现:

(?<=.*ftp.*)[^/]+(\.(?:g|x)z)$

答案参考代码:

(?<=.*ftp.*/)[^/]*\.(?:gz|xz)

--结束END--

本文标题: Python第六周 学习笔记(3)

本文链接: https://lsjlt.com/news/190979.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python第六周 学习笔记(3)
    1.指定一个源文件,实现copy到目标目录 个人实现: def filecopy(filename:str, cp_filename:str): ''' Author: lijl Description: 复制文...
    99+
    2023-01-31
    学习笔记 六周 Python
  • Python第一周 学习笔记(3)
    一、数值型 1.数据类型分类: int:整数 python3的int就是长整型,且没有大小限制,受限于内存区域的大小int(x) 返回一个整数 float:浮点数 有整数部分和小数部分组成。支持十进制和科学计数法表示。只有双精度型。f...
    99+
    2023-01-31
    学习笔记 第一周 Python
  • Python第二周 学习笔记(3)
    1.运用数组实现求10万以内质数: prime = [2] for i in range(3,100000,2): flag = False up = int(i**0.5)+1 for j in prime: ...
    99+
    2023-01-31
    学习笔记 Python
  • 第一周Python学习笔记
     Python 基本语法: ①  Python程序的格式:1.用代码高亮来标识函数丶语句等等 本身的代码高亮并没有实际的意义,只是用来辅助编程人员和阅读人员 更好的识别    2.程序以缩进来标识语句,缩进用来标识代码间的层次关系,缩进的...
    99+
    2023-01-30
    学习笔记 第一周 Python
  • Python第五周 学习笔记(2)
    一、实现一个cache装饰器,实现可过期被清除的功能 简化设计,函数的形参定义不包含可变位置参数、可变关键词参数和keyword-only参数 可以不考虑缓存满了之后的换出问题 1)原始 def cache(fn): imp...
    99+
    2023-01-31
    学习笔记 Python
  • Python第八周 学习笔记(1)
    基本概念个体继承自父母,继承了父母的一部分特征,但也可以有自己的个性 子类继承了父类,就直接拥有了父类的属性和方法,也可以定义自己的属性、方法,甚至对父类的属性、方法进行重写 Python继承实现 class Cat(Anima...
    99+
    2023-01-31
    学习笔记 Python
  • Python第九周 学习笔记(1)
    get(self, instance, owner) 访问属性时调用 set(self, instance, value) 当对属性赋值时调用 delete(self, instance) 删除属性时调用 sel...
    99+
    2023-01-31
    学习笔记 Python
  • 学习笔记-小甲鱼Python3学习第六讲
    常用操作符运算操作符:加+ 减- 乘* 除/ 余% 幂运算** 地板除//比较操作符: < ,> ,<=,>=,==,!=逻辑操作符: and,or,not优先级:幂运算符有点特殊,当它左侧是一个一元运算符时,幂运算...
    99+
    2023-01-31
    甲鱼 学习笔记 第六讲
  • 学习笔记-小甲鱼Python3学习第十六
    列表、元组和字符串的共同点:-都可以通过索引得到每一个元素-默认索引值总是从0开始-可以通过分片的方法得到一个范围内的元素的集合-有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)关于序列的常见内置方法(BIF):list()把一...
    99+
    2023-01-31
    甲鱼 学习笔记
  • Python学习笔记六(Python t
    通过python time模块提供的函数和方法可以获取与时间相关的操作,例如:获取系统时间,统计程序执行时间,WEB程序的响应时间等。1)time.time(),该函数返回从1970年1月1日0点0分以来的秒数,这是一个浮点数,在编程中...
    99+
    2023-01-31
    学习笔记 Python
  • python学习笔记(3)
    在大概了解了程序之后,我也买了本python书学习一下,因为现在新版的python3.4.0已经不再兼容2.x.x的内容,书虽然很新,但是有些例子还是用的过去的。1.比如在3.0中print 42不能再产生输出了,要改成print(42)&...
    99+
    2023-01-31
    学习笔记 python
  • Python学习笔记(3)--- Fla
    在安装flask前,首先安装pip安装地址:https://pip.pypa.io/en/stable/installing.html#install-pip下载(保存):在dos命令下执行 python get-pip.py安装然后 执行...
    99+
    2023-01-31
    学习笔记 Python Fla
  • Python 3 学习笔记:Excel
    安装模块 OpenPyXL 模块是一个第三方模块,所以需要使用 pip 工具安装, pip install openpyxl 文件结构 首先,我们需要了解一下 Excel 文件的基本结构,一个 Excel 文件被称为一个工作薄,工作薄中可以...
    99+
    2023-01-31
    学习笔记 Python Excel
  • Python学习笔记(3)Python中
    Escape What it does. 含义  \\ Backslash () 反斜杠 \' Single-quote (') 单引号 \" Double-quote (") 双引号 \a ASCII bell (BEL) 响铃符 \b...
    99+
    2023-01-31
    学习笔记 Python
  • Python学习笔记整理(六)Pytho
    一、字典介绍 字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 1、字...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • 学习笔记3
    一文件查找和压缩1文件查找locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件 find 实时搜索,精确搜索,默认当前目录递归搜索 find用法 -maxdepth...
    99+
    2023-01-31
    学习笔记
  • 学习笔记(3)
    1.* 匹配零个或多个字符(通配符中)2.ls 的-d选项不仅仅可以显示指定目录的信息,还可以用来表示不递归子文件夹。  # ls -dl /etc 显示/etc目录的信息  # ls -d /etc 只显示/etc下面的文件夹3.显示/v...
    99+
    2023-01-31
    学习笔记
  • python 学习笔记 3 -- 数据
    当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 引用 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。eg. # -*- coding: utf-8 -*-  shopli...
    99+
    2023-01-31
    学习笔记 数据 python
  • python 学习笔记(3)-转载
    Python中只有一个赋值模型一、缺少类型声明语句的情况在Python中,类型是在运行过程中自动决定的,而不是通过代码声明。这意味着没有必要事声明变量。只要记住,这个概念实质上对变量,对象和它们之间的关系都适用。那么这个概念也容易理解并掌握...
    99+
    2023-01-31
    学习笔记 python
  • Python 3 学习笔记:序列
    序列 索引 序列是一块用于放置多个值得连续存储空间,并且按特定顺序排列,每个值(称为元素)都分配一个整数(由左至右则从 0 开始;由右至左则从 -1 开始),称为索引(index)或位置,如下所示: 可以根据索引获取每个元素实际的值 st...
    99+
    2023-01-31
    序列 学习笔记 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作