• 流暢的python學習-3


    一、文件操作

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Created on Thu Apr 23 20:59:49 2020
    
    @author: root
    """
    
    
    import os
    import fnmatch
    
    
    # example
    for f_name in os.listdir('/tmp/some_directory'):
        if fnmatch.fnmatch(f_name, '*.txt'):
           print (f_name)
           
           
    # 例如,在UNIX shell中使用 mv *.py python_files 移动所有 .py 扩展名 的文件
    # 从当前目录到 python_files 。这 * 是一个通配符表示任意数量的字符,*.py 
    # 是一个全模式。Windows操作系统中不提供此shell功能。
    # 但 glob 模块在Python中添加了此功能,使得Windows程序可以使用这个特性。
    # 这里有一个使用 glob 模块在当前目录下查询所有Python代码文   
    
    import glob
    print (glob.glob('*.py'))  
    
    
    for name in glob.glob('*[0-9]*.txt'):
        print (name)
        
        
        
    import os
    # data_file = '/tmp/some_directory/demo1.txt' 
    # if os.path.is_file(data_file):
    #    os.remove(data_file)
    # else:
    #     print (f'Error: {data_file} not a valid filename')
        
        
        
    # f = open('/tmp/some_directory/demo1.txt','rb+')
    # print(f.read()) ##直接打印出来
    # print(f.readline()) ##打印第一行 
    # print(f.readlines()) 
    # print(f.readline(),end='')
    # print(f.readlines(),end='')
    # print([line.strip() for line in f.readlines()])
    # f.write('python 8888888888')
    # f.close()
    
    
    
    
    
    
    
    
    
    import string
    import random
    def create_mac():
        mac='01-AF-3B'
        for i in range(3):
            n=random.sample(string.hexdigits,2)
            sn='-'+''.join(n).upper()
            mac+=sn
        return mac    
    
    
    with open('	mpsome_directorydemo9.txt','w+') as f:
        for i in range(100):
            mac=create_mac()
            print (mac)
            f.write(mac+'
    ')
        f.close()
            
            
    
    with open('	mpsome_directorydemo9.txt') as f:        
    #使用这种文件的打开方式更加简单了,同时可以避免忘记关闭文件的情况
        print('9999999999999999',f.read())

    在现代Python版本中,可以使用 os.scandir() 和 pathlib.Path 来替代 os.listdir() 。
    
    os.scandir() 在Python 3.5 中被引用,其文档为 PEP 471 。
    
    os.scandir() 调用时返回一个迭代器而不是一个列表。
    
    import os
    entries = os.scandir('my_directory')
    print(entries)
    
    
    
    ScandirIterator 指向了当前目录中的所有条目。你可以遍历迭代器的内容,并打印文件名。
    
    import os
    with os.scandir('my_directory') as entries:
        for entry in entries:
            print(entry.name)

    案例:

    第一步:在本機的 /tmp/some_directory/  目錄下建 test1.txt  、 test2.txt

     代碼:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Created on Fri Apr 24 23:13:49 2020
    
    @author: root
    有两个文件,每个都有很多行ip地址,求出两个文件中相同的ip地址
    要点就是:(1)用with (2)处理行末的'
    ' (3)使用二分查找提高算法效率。(4)使用set快速去重。
    """
    
    import bisect
    b= open('/tmp/some_directory/demo9.txt', 'w')
    with open('/tmp/some_directory/test1.txt','r') as f1:
         list1=f1.readlines()
         print (list1)
         for i in range(len(list1)):
             list1[i]=list1[i].strip('
    ')
             
             
    with open('/tmp/some_directory/test2.txt','r') as f2:
         list2=f2.readlines()
         print (list2)
         for i in range(len(list2)):
             list2[i]=list2[i].strip('
    ') 
             
    list2.sort()
    l_2=len(list2)
    same_data=[]
    for i in list1:
        pos = bisect.bisect_left(list2, i)   
        if pos<len(list2) and list2[pos]==i:
           same_data.append(i) 
           b.write(i+'
    ')
           same_data=list(set(same_data))
    print (same_data)
             
  • 相关阅读:
    .NET_.NET 发布(publish)网站_012
    Oracle 11g Release 1 (11.1) 单行函数——日期函数
    Oracle 11g Release 1 (11.1) SQL_层级查询(概)
    C# 清理非托管资源
    NChain 0.1 项目——但愿是根救命稻草
    人工智能——神经网络
    概念——都有哪些 Web 服务方式
    从 Fibonacci 数列看“动态规划”思想
    QR 码
    Oracle 11g Release 1 (11.1) 表空间——创建和扩展永久表空间
  • 原文地址:https://www.cnblogs.com/1314520xh/p/12765074.html
Copyright © 2020-2023  润新知