一、文件操作

#!/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('\tmp\some_directory\demo9.txt','w+') as f:
for i in range(100):
mac=create_mac()
print (mac)
f.write(mac+'\n')
f.close() with open('\tmp\some_directory\demo9.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)处理行末的'\n' (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('\n') 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('\n') 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+'\n')
same_data=list(set(same_data))
print (same_data)

流暢的python學習-3的更多相关文章

  1. [Python學習筆記] 使用xlwings 插入註解 (forked 版本)

    到今天為止 xlwings 還沒有插入註解的功能 去原始開發者的 Github Pull Requests 他說之前有人有建議要加入這個功能 但他還沒更新~ 如果需要使用 Python 來插入註解的話 ...

  2. python 學習深淺拷貝、集合、、作用域、函數

    python 學習深淺拷貝.集合..作用域.函數 2020開年新冠肺炎流行大部分人員.工廠.單位無法復工生產,人員隔離每天外出都要戴口罩,在家隔離期間悶壞了感覺把半年的口糧都幹掉了,嚴重考察大家的資本 ...

  3. [Python學習筆記] 利用 Python在Excel 插入註解

    用Python 來處理excel 檔 用過了 openpyxl 還有 pyexcel目前覺得除了讀寫如果還要使用另外的功能 (像是讀取格子裡的公式)可以用 xlwings  他的首頁標題 " ...

  4. [Python學習筆記] 抓出msg信件檔裡的附件檔案

    想要把msg信件檔案的附件抓出來做處理,找到了這個Python 模組 msg-extractor 使用十分容易,但是這個模組是要在terminal裡執行,無法直接打在IDLE的編輯器上 所以稍微做了修 ...

  5. [Python學習筆記] 在Centos上安裝 Django

    曾在模擬器跟Digital Ocean上安裝成功,我在 Digital Ocean上的是CentOS 7 x64,模擬器的則是Centos 6.雖然Centos 本身已經裝好 Python 但是是2. ...

  6. [Python學習筆記] 使用 selenium 抓取網頁並且雙擊滑鼠 (double click)

    一開始使用的時候 看官方文件 以為使用 double_click()即可 但後來出現錯誤 AttributeError: 'WebElement' object has no attribute 'd ...

  7. 無心插柳的Linux學習者代言人——蔡德明

    誰是「蔡德明」恐怕沒有多少人知道,不過提到「鳥哥」這個稱號,在臺灣的Linux社群幾乎是無人不知無人不曉,蔡德明正是鳥哥的本名.鳥哥究竟多有名? 如果你是有意學習Linux的初學者,卻不知如何下手,1 ...

  8. RxSwift學習教程之基礎篇

    前言 我們在 iOS 開發過程中,幾乎無時無刻都要面對異步事件的處理.例如,按鍵點擊.數據保存..音頻後臺播放.交互動畫展示.這些事件並不具備特定時序性,甚至它們可能同時發生. 雖然 Apple 提供 ...

  9. 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(3)

    作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...

随机推荐

  1. C语言数组初始化方式

    //一维数组初始化//初始化方法1 int arr[5] = {3,7,2,1,9}; //定义了一个长度是5的数组,并给每个元素赋值 //初始化方法2 int arr[5] = {3,7}; //给 ...

  2. Nginx 配置文件介绍

    目录 1.1 常用命令 1.2 Nginx的配置文件结构 1.3 Nginx的全局配置 1.4 HTTP服务器配置 1.5 HttpGzip配置 1.6 负载均衡配置 1.7 server虚拟主机配置 ...

  3. Kafka 的这些原理你懂吗

    如果只是为了开发 Kafka 应用程序,或者只是在生产环境使用 Kafka,那么了解 Kafka 的内部工作原理不是必须的.不过,了解 Kafka 的内部工作原理有助于理解 Kafka 的行为,也利用 ...

  4. SQL Prompt快捷键

    1. DF DELETE FROM  2. ssf SELECT * FROM  3. be BEGIN  END 4. ij INNER JOIN  5. ap ALTER PROCEDURE  6 ...

  5. windows 安装Git详解

    windows 安装Git详解 一.Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Lin ...

  6. 【原创】Ingress-Nginx-Controller的Metrics监控源码改造简析

    一.背景 目前我们的生产环境一层Nginx已经容器化部署,但是监控并不完善,我们期望其具有Ingress-Nginx-Controller组件上报监控的数据.这样可以建立请求全链路的监控大盘.有利于监 ...

  7. App免责声明

    一切移动客户端用户在下载并浏览xxxAPP软件时均被视为已经仔细阅读本条款并完全同意.凡以任何方式使用本APP,或直接.间接使用本APP资料者,均被视为自愿接受本网页相关声明和用户服务协议的约束. x ...

  8. 从 Vue parseHTML 来学习正则表达式

    从 Vue parseHTML 所用正则来学习常用正则语法 Vue parseHTML 中所用的所有正则如下.常见正则规则可参见附录 1,Vue parseHTML 正则所用规则均可在其中找到定义. ...

  9. 三剑客-sed

    1.sed命令概述说明: 字符流编辑工具(行编辑工具) 2.sed命令作用说明: (1)擅长对行进行操作处理 (2)擅长将文件的信息进行修改调整/删除 3.sed具体功能 (1)文件中添加信息的能力( ...

  10. ELK Stack企业日志平台文档

                                          ELK Stack企业日志平台文档           实验环境 主机名 IP地址 配置 系统版本 用途 controlno ...