当前位置:首页 » 编程语言 » python遍历所有目录

python遍历所有目录

发布时间: 2024-03-16 14:22:59

python遍历目录就是这么简单

有时我们有列出目录下都有哪些文件和子目录的需求,这种情况是有现成命令可用的,比如windows下的dir命令,linux下的ls命令都可以,那我们用python代码怎么实现呢?

我们利用python丰富的库很容易就能实现一个简易版本,下面我们就用4种方法来实现它。

一、使用os.popen

os.popen工作原理是新建一个子进程,然后用这个子进程执行命令,父进程与子进程间通过管道进行通信。

根据调用popen时的传参,我们可以通过管道读取子进程的输出也可以向子进程写数据,默认是读取子进程的输出。

从以上描述可以看出popen是非常通用的,不是只能用于我们这个例子哦。

那我们开始用它实现我们的需求吧,代码如下:

哈哈,是不是很简单,这种方式虽然能达到目的但其实并不是我们想要的,我们本来就是要实现ls的,结果调用了ls,所以严格意义上来说我们并没有实现ls,那让我们继续往下看其它方法吧,嘿嘿。

二、使用glob.glob

glob可以根据你使用的通配符对文件进行匹配,利用这个特性我们可以列出当前目录下都有哪些文件和子目录,如下代码:

三、使用os.listdir

os.listdir同样可以列出某个目录下都有哪些文件和子目录,如下代码:

四、使用os.walk

os.walk在遍历目录方面非常强大,它不但可以遍历你需要的目录,也可以递归遍历子目录且递归的深度可以用代码控制,下面让我们分别看下怎么遍历整个目录树以及怎么控制深度吧。

os.walk默认是遍历整个目录树的,如下代码就会递归打印出当前目录下所有文件:

那我们怎么控制遍历的深度,比如只遍历n层呢?其实很简单,只需要定义一个深度变量,然后到达n后跳出循环即可,如下代码就只遍历1层:

至此我们已经写完4种方法了,如果你还有其他方法,欢迎评论交流。

❷ 如何利用Python遍历文件夹

import os
import os.path
rootdir = “d:\data” # 指明被遍历的文件夹

for parent,dirnames,filenames in os.walk(rootdir): #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
for dirname in dirnames: #输出文件夹信息
print "parent is:" + parent
print "dirname is" + dirname

for filename in filenames: #输出文件信息
print "parent is": + parent
print "filename is:" + filename
print "the full name of the file is:" + os.path.join(parent,filename) #输出文件路径信息

#windows下为:d:\data\query_text\EL_00154

❸ python 运维常用脚本

Python 批量遍历目录文件,并修改访问时间

import os

path = "D:/UASM64/include/"
dirs = os.listdir(path)
temp=[];

for file in dirs:
temp.append(os.path.join(path, file))
for x in temp:
os.utime(x, (1577808000, 1577808000))
Python 实现的自动化服务器管理

import sys
import os
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def ssh_cmd(user,passwd,port,userfile,cmd):

def ssh_put(user,passwd,source,target):

while True:
try:
shell=str(input("[Shell] # "))
if (shell == ""):
continue
elif (shell == "exit"):
exit()
elif (shell == "put"):
ssh_put("root","123123","./a.py","/root/a.py")
elif (shell =="cron"):
temp=input("输入一个计划任务: ")
temp1="(crontab -l; echo "+ temp + ") |crontab"
ssh_cmd("root","123123","22","./user_ip.conf",temp1)
elif (shell == "uncron"):
temp=input("输入要删除的计划任务: ")
temp1="crontab -l | grep -v " "+ temp + "|crontab"
ssh_cmd("root","123123","22","./user_ip.conf",temp1)
else:
ssh_cmd("lyshark","123123","22","./user_ip.conf",shell)

遍历目录和文件

import os

def list_all_files(rootdir):
import os
_files = []
list = os.listdir(rootdir) #列出文件夹下所有的目录与文件
for i in range(0,len(list)):
path = os.path.join(rootdir,list[i])
if os.path.isdir(path):
_files.extend(list_all_files(path))
if os.path.isfile(path):
_files.append(path)
return _files

a=list_all_files("C:/Users/LyShark/Desktop/a")
print(a)
python检测指定端口状态

import socket

sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.settimeout(1)

for ip in range(0,254):
try:
sk.connect(("192.168.1."+str(ip),443))
print("192.168.1.%d server open "%ip)
except Exception:
print("192.168.1.%d server not open"%ip)

sk.close()

python实现批量执行CMD命令

import sys
import os
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

print("------------------------------> ")
print("使用说明,在当前目录创建ip.txt写入ip地址")
print("------------------------------> ")

user=input("输入用户名:")
passwd=input("输入密码:")
port=input("输入端口:")
cmd=input("输入执行的命令:")

file = open("./ip.txt", "r")
line = file.readlines()

for i in range(len(line)):
print("对IP: %s 执行"%line[i].strip(' '))

python3-实现钉钉报警

import requests
import sys
import json

dingding_url = ' https://oapi.dingtalk.com/robot/send?access_token='

data = {"msgtype": "markdown","markdown": {"title": "监控","text": "apche异常"}}

headers = {'Content-Type':'application/json;charset=UTF-8'}

send_data = json.mps(data).encode('utf-8')
requests.post(url=dingding_url,data=send_data,headers=headers)

import psutil
import requests
import time
import os
import json

monitor_name = set(['httpd','cobblerd']) # 用户指定监控的服务进程名称

proc_dict = {}
proc_name = set() # 系统检测的进程名称
monitor_map = {
'httpd': 'systemctl restart httpd',
'cobblerd': 'systemctl restart cobblerd' # 系统在进程down掉后,自动重启
}

dingding_url = ' https://oapi.dingtalk.com/robot/send?access_token='

while True:
for proc in psutil.process_iter(attrs=['pid','name']):
proc_dict[proc.info['pid']] = proc.info['name']
proc_name.add(proc.info['name'])

判断指定端口是否开放

import socket

port_number = [135,443,80]

for index in port_number:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((飗.0.0.1', index))
if result == 0:
print("Port %d is open" % index)
else:
print("Port %d is not open" % index)
sock.close()

判断指定端口并且实现钉钉轮询报警

import requests
import sys
import json
import socket
import time

def dingding(title,text):
dingding_url = ' https://oapi.dingtalk.com/robot/send?access_token='
data = {"msgtype": "markdown","markdown": {"title": title,"text": text}}
headers = {'Content-Type':'application/json;charset=UTF-8'}
send_data = json.mps(data).encode('utf-8')
requests.post(url=dingding_url,data=send_data,headers=headers)

def net_scan():
port_number = [80,135,443]
for index in port_number:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((飗.0.0.1', index))
if result == 0:
print("Port %d is open" % index)
else:
return index
sock.close()

while True:
dingding("Warning",net_scan())
time.sleep(60)

python-实现SSH批量CMD执行命令

import sys
import os
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def ssh_cmd(user,passwd,port,userfile,cmd):
file = open(userfile, "r")
line = file.readlines()
for i in range(len(line)):
print("对IP: %s 执行"%line[i].strip(' '))
ssh.connect(hostname=line[i].strip(' '),port=port,username=user,password=passwd)
cmd=cmd
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read()

ssh_cmd("lyshark","123","22","./ip.txt","free -h |grep 'Mem:' |awk '{print $3}'")

用python写一个列举当前目录以及所有子目录下的文件,并打印出绝对路径

import sys
import os

for root,dirs,files in os.walk("C://"):
for name in files:
print(os.path.join(root,name))
os.walk()

按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为2013-09-23.log, 并且把磁盘的使用情况写到到这个文件中。

import os
import sys
import time

new_time = time.strftime("%Y-%m-%d")
disk_status = os.popen("df -h").readlines()

str1 = ''.join(disk_status)
f = open(new_time+'.log','w')
f.write("%s"%str1)

f.flush()
f.close()

统计出每个IP的访问量有多少?(从日志文件中查找)

import sys

list = []

f = open("/var/log/httpd/access_log","r")
str1 = f.readlines()
f.close()

for i in str1:
ip=i.split()[0]
list.append(ip)

list_num=set(list)

for j in list_num:
num=list.count(j)
print("%s -----> %s" %(num,j))

写个程序,接受用户输入数字,并进行校验,非数字给出错误提示,然后重新等待用户输入。

import tab
import sys

while True:
try:
num=int(input("输入数字:").strip())
for x in range(2,num+1):
for y in range(2,x):
if x % y == 0:
break
else:
print(x)
except ValueError:
print("您输入的不是数字")
except KeyboardInterrupt:
sys.exit(" ")

ps 可以查看进程的内存占用大小,写一个脚本计算一下所有进程所占用内存大小的和。

import sys
import os

list=[]
sum=0

str1=os.popen("ps aux","r").readlines()

for i in str1:
str2=i.split()
new_rss=str2[5]
list.append(new_rss)
for i in list[1:-1]:
num=int(i)
sum=sum+num

print("%s ---> %s"%(list[0],sum))

关于Python 命令行参数argv

import sys

if len(sys.argv) < 2:
print ("没有输入任何参数")
sys.exit()

if sys.argv[1].startswith("-"):
option = sys.argv[1][1:]

利用random生成6位数字加字母随机验证码

import sys
import random

rand=[]

for x in range(6):
y=random.randrange(0,5)
if y == 2 or y == 4:
num=random.randrange(0,9)
rand.append(str(num))
else:
temp=random.randrange(65,91)
c=chr(temp)
rand.append(c)
result="".join(rand)
print(result)

自动化-使用pexpect非交互登陆系统

import pexpect
import sys

ssh = pexpect.spawn('ssh [email protected]')
fout = file('sshlog.txt', 'w')
ssh.logfile = fout

ssh.expect("[email protected]'s password:")

ssh.sendline("密码")
ssh.expect('#')

ssh.sendline('ls /home')
ssh.expect('#')

Python-取系统时间

import sys
import time

time_str = time.strftime("日期:%Y-%m-%d",time.localtime())
print(time_str)

time_str= time.strftime("时间:%H:%M",time.localtime())
print(time_str)

psutil-获取内存使用情况

import sys
import os
import psutil

memory_convent = 1024 * 1024
mem =psutil.virtual_memory()

print("内存容量为:"+str(mem.total/(memory_convent))+"MB ")
print("已使用内存:"+str(mem.used/(memory_convent))+"MB ")
print("可用内存:"+str(mem.total/(memory_convent)-mem.used/(1024*1024))+"MB ")
print("buffer容量:"+str(mem.buffers/( memory_convent ))+"MB ")
print("cache容量:"+str(mem.cached/(memory_convent))+"MB ")

Python-通过SNMP协议监控CPU
注意:被监控的机器上需要支持snmp协议 yum install -y net-snmp*

import os

def getAllitems(host, oid):
sn1 = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid + '|grep Raw|grep Cpu|grep -v Kernel').read().split(' ')[:-1]
return sn1

def getDate(host):
items = getAllitems(host, '.1.3.6.1.4.1.2021.11')

if name == ' main ':

Python-通过SNMP协议监控系统负载
注意:被监控的机器上需要支持snmp协议 yum install -y net-snmp*

import os
import sys

def getAllitems(host, oid):
sn1 = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid).read().split(' ')
return sn1

def getload(host,loid):
load_oids = Ƈ.3.6.1.4.1.2021.10.1.3.' + str(loid)
return getAllitems(host,load_oids)[0].split(':')[3]

if name == ' main ':

Python-通过SNMP协议监控内存
注意:被监控的机器上需要支持snmp协议 yum install -y net-snmp*

import os

def getAllitems(host, oid):

def getSwapTotal(host):

def getSwapUsed(host):

def getMemTotal(host):

def getMemUsed(host):

if name == ' main ':

Python-通过SNMP协议监控磁盘
注意:被监控的机器上需要支持snmp协议 yum install -y net-snmp*

import re
import os

def getAllitems(host,oid):

def getDate(source,newitem):

def getRealDate(item1,item2,listname):

def caculateDiskUsedRate(host):

if name == ' main ':

Python-通过SNMP协议监控网卡流量
注意:被监控的机器上需要支持snmp协议 yum install -y net-snmp*

import re
import os

def getAllitems(host,oid):
sn1 = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid).read().split(' ')[:-1]
return sn1

def getDevices(host):
device_mib = getAllitems(host,'RFC1213-MIB::ifDescr')
device_list = []

def getDate(host,oid):
date_mib = getAllitems(host,oid)[1:]
date = []

if name == ' main ':

Python-实现多级菜单

import os
import sys

ps="[None]->"
ip=["192.168.1.1","192.168.1.2","192.168.1.3"]
flage=1

while True:
ps="[None]->"
temp=input(ps)
if (temp=="test"):
print("test page !!!!")
elif(temp=="user"):
while (flage == 1):
ps="[User]->"
temp1=input(ps)
if(temp1 =="exit"):
flage=0
break
elif(temp1=="show"):
for i in range(len(ip)):
print(i)

Python实现一个没用的东西

import sys

ps="[root@localhost]# "
ip=["192.168.1.1","192.168.1.2","192.168.1.3"]

while True:
temp=input(ps)
temp1=temp.split()

检查各个进程读写的磁盘IO

import sys
import os
import time
import signal
import re

class DiskIO:
def init (self, pname=None, pid=None, reads=0, writes=0):
self.pname = pname
self.pid = pid
self.reads = 0
self.writes = 0

def main():
argc = len(sys.argv)
if argc != 1:
print ("usage: please run this script like [./lyshark.py]")
sys.exit(0)
if os.getuid() != 0:
print ("Error: This script must be run as root")
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
os.system('echo 1 > /proc/sys/vm/block_mp')
print ("TASK PID READ WRITE")
while True:
os.system('dmesg -c > /tmp/diskio.log')
l = []
f = open('/tmp/diskio.log', 'r')
line = f.readline()
while line:
m = re.match(
'^(S+)(d+)(d+): (READ|WRITE) block (d+) on (S+)', line)
if m != None:
if not l:
l.append(DiskIO(m.group(1), m.group(2)))
line = f.readline()
continue
found = False
for item in l:
if item.pid == m.group(2):
found = True
if m.group(3) == "READ":
item.reads = item.reads + 1
elif m.group(3) == "WRITE":
item.writes = item.writes + 1
if not found:
l.append(DiskIO(m.group(1), m.group(2)))
line = f.readline()
time.sleep(1)
for item in l:
print ("%-10s %10s %10d %10d" %
(item.pname, item.pid, item.reads, item.writes))
def signal_handler(signal, frame):
os.system('echo 0 > /proc/sys/vm/block_mp')
sys.exit(0)

if name ==" main ":
main()

利用Pexpect实现自动非交互登陆linux

import pexpect
import sys

ssh = pexpect.spawn('ssh [email protected]')
fout = file('sshlog.log', 'w')
ssh.logfile = fout

ssh.expect("[email protected]'s password:")

ssh.sendline("密码")

ssh.expect('#')
ssh.sendline('ls /home')
ssh.expect('#')

利用psutil模块获取系统的各种统计信息

import sys
import psutil
import time
import os

time_str = time.strftime( "%Y-%m-%d", time.localtime( ) )
file_name = "./" + time_str + ".log"

if os.path.exists ( file_name ) == False :
os.mknod( file_name )
handle = open ( file_name , "w" )
else :
handle = open ( file_name , "a" )

if len( sys.argv ) == 1 :
print_type = 1
else :
print_type = 2

def isset ( list_arr , name ) :
if name in list_arr :
return True
else :
return False

print_str = "";

if ( print_type == 1 ) or isset( sys.argv,"mem" ) :
memory_convent = 1024 * 1024
mem = psutil.virtual_memory()
print_str += " 内存状态如下: "
print_str = print_str + " 系统的内存容量为: "+str( mem.total/( memory_convent ) ) + " MB "
print_str = print_str + " 系统的内存以使用容量为: "+str( mem.used/( memory_convent ) ) + " MB "
print_str = print_str + " 系统可用的内存容量为: "+str( mem.total/( memory_convent ) - mem.used/( 1024*1024 )) + "MB "
print_str = print_str + " 内存的buffer容量为: "+str( mem.buffers/( memory_convent ) ) + " MB "
print_str = print_str + " 内存的cache容量为:" +str( mem.cached/( memory_convent ) ) + " MB "

if ( print_type == 1 ) or isset( sys.argv,"cpu" ) :
print_str += " CPU状态如下: "
cpu_status = psutil.cpu_times()
print_str = print_str + " user = " + str( cpu_status.user ) + " "
print_str = print_str + " nice = " + str( cpu_status.nice ) + " "
print_str = print_str + " system = " + str( cpu_status.system ) + " "
print_str = print_str + " idle = " + str ( cpu_status.idle ) + " "
print_str = print_str + " iowait = " + str ( cpu_status.iowait ) + " "
print_str = print_str + " irq = " + str( cpu_status.irq ) + " "
print_str = print_str + " softirq = " + str ( cpu_status.softirq ) + " "
print_str = print_str + " steal = " + str ( cpu_status.steal ) + " "
print_str = print_str + " guest = " + str ( cpu_status.guest ) + " "

if ( print_type == 1 ) or isset ( sys.argv,"disk" ) :
print_str += " 硬盘信息如下: "
disk_status = psutil.disk_partitions()
for item in disk_status :
print_str = print_str + " "+ str( item ) + " "

if ( print_type == 1 ) or isset ( sys.argv,"user" ) :
print_str += " 登录用户信息如下: "
user_status = psutil.users()
for item in user_status :
print_str = print_str + " "+ str( item ) + " "

print_str += "--------------------------------------------------------------- "
print ( print_str )
handle.write( print_str )
handle.close()

import psutil

mem = psutil.virtual_memory()
print mem.total,mem.used,mem
print psutil.swap_memory() # 输出获取SWAP分区信息

cpu = psutil.cpu_stats()
printcpu.interrupts,cpu.ctx_switches

psutil.cpu_times(percpu=True) # 输出每个核心的详细CPU信息
psutil.cpu_times().user # 获取CPU的单项数据 [用户态CPU的数据]
psutil.cpu_count() # 获取CPU逻辑核心数,默认logical=True
psutil.cpu_count(logical=False) # 获取CPU物理核心数

psutil.disk_partitions() # 列出全部的分区信息
psutil.disk_usage('/') # 显示出指定的挂载点情况【字节为单位】
psutil.disk_io_counters() # 磁盘总的IO个数
psutil.disk_io_counters(perdisk=True) # 获取单个分区IO个数

psutil.net_io_counter() 获取网络总的IO,默认参数pernic=False
psutil.net_io_counter(pernic=Ture)获取网络各个网卡的IO

psutil.pids() # 列出所有进程的pid号
p = psutil.Process(2047)
p.name() 列出进程名称
p.exe() 列出进程bin路径
p.cwd() 列出进程工作目录的绝对路径
p.status()进程当前状态[sleep等状态]
p.create_time() 进程创建的时间 [时间戳格式]
p.uids()
p.gids()
p.cputimes() 【进程的CPU时间,包括用户态、内核态】
p.cpu_affinity() # 显示CPU亲缘关系
p.memory_percent() 进程内存利用率
p.meminfo() 进程的RSS、VMS信息
p.io_counters() 进程IO信息,包括读写IO数及字节数
p.connections() 返回打开进程socket的nametples列表
p.num_threads() 进程打开的线程数

import psutil
from subprocess import PIPE
p =psutil.Popen(["/usr/bin/python" ,"-c","print 'helloworld'"],stdout=PIPE)
p.name()
p.username()
p.communicate()
p.cpu_times()

psutil.users() # 显示当前登录的用户,和Linux的who命令差不多

psutil.boot_time() 结果是个UNIX时间戳,下面我们来转换它为标准时间格式,如下:
datetime.datetime.fromtimestamp(psutil.boot_time()) # 得出的结果不是str格式,继续进行转换 datetime.datetime.fromtimestamp(psutil.boot_time()).strftime('%Y-%m-%d%H:%M:%S')

Python生成一个随机密码

import random, string
def GenPassword(length):

if name == ' main ':
print (GenPassword(6))

❹ 如何用python遍历文件夹下的所有excel文件

大数据处理经常要用到一堆表格,然后需要把数据导入一个list中进行各种算法分析,简单讲一下自己的做法:

1.如何读取excel文件

网上的版本很多,在xlrd模块基础上,找到一些源码

[python]view plain

  • importxdrlib,sys

  • importxlrd

  • defopen_excel(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx"):

  • data=xlrd.open_workbook(file)

  • returndata

  • #根据索引获取Excel表格中的数据参数:file:Excel文件路径colnameindex:表头列名所在行的所以,by_index:表的索引

  • defexcel_table_byindex(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx",colnameindex=0,by_index=0):

  • data=open_excel(file)

  • table=data.sheets()[by_index]

  • nrows=table.nrows#行数

  • ncols=table.ncols#列数

  • colnames=table.row_values(colnameindex)#某一行数据

  • list=[]

  • forrownuminrange(1,nrows):

  • row=table.row_values(rownum)

  • ifrow:

  • app={}

  • foriinrange(len(colnames)):

  • app[colnames[i]]=row[i]

  • list.append(app)

  • returnlist

  • #根据名称获取Excel表格中的数据参数:file:Excel文件路径colnameindex:表头列名所在行的所以,by_name:Sheet1名称

  • defexcel_table_byname(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx",colnameindex=0,by_name=u'Sheet1'):

  • data=open_excel(file)

  • table=data.sheet_by_name(by_name)

  • nrows=table.nrows#行数

  • colnames=table.row_values(colnameindex)#某一行数据

  • list=[]

  • forrownuminrange(1,nrows):

  • row=table.row_values(rownum)

  • ifrow:

  • app={}

  • foriinrange(len(colnames)):

  • app[colnames[i]]=row[i]

  • list.append(app)

  • returnlist

  • defmain():

  • tables=excel_table_byindex()

  • forrowintables:

  • print(row)

  • tables=excel_table_byname()

  • forrowintables:

  • print(row)

  • if__name__=="__main__":

  • main()

  • 最后一句是重点,所以这里也给代码人点个赞!
  • 最后一句让代码里的函数都可以被复用,简单地说:假设文件名是a,在程序中import a以后,就可以用a.excel_table_byname()和a.excel_table_byindex()这两个超级好用的函数了。

    2.然后是遍历文件夹取得excel文件以及路径:,原创代码如下:

    [python]view plain

  • importos

  • importxlrd

  • importtest_wy

  • xpath="E:/唐伟捷/电力/电力系统总文件夹/舟山电力"

  • xtype="xlsx"

  • typedata=[]

  • name=[]

  • raw_data=[]

  • file_path=[]

  • defcollect_xls(list_collect,type1):

  • #取得列表中所有的type文件

  • foreach_elementinlist_collect:

  • ifisinstance(each_element,list):

  • collect_xls(each_element,type1)

  • elifeach_element.endswith(type1):

  • typedata.insert(0,each_element)

  • returntypedata

  • #读取所有文件夹中的xls文件

  • defread_xls(path,type2):

  • #遍历路径文件夹

  • forfileinos.walk(path):

  • foreach_listinfile[2]:

  • file_path=file[0]+"/"+each_list

  • #os.walk()函数返回三个参数:路径,子文件夹,路径下的文件,利用字符串拼接file[0]和file[2]得到文件的路径

  • name.insert(0,file_path)

  • all_xls=collect_xls(name,type2)

  • #遍历所有type文件路径并读取数据

  • forevey_nameinall_xls:

  • xls_data=xlrd.open_workbook(evey_name)

  • foreach_sheetinxls_data.sheets():

  • sheet_data=test_wy.excel_table_byname(evey_name,0,each_sheet.name)

  • #请参考读取excel文件的代码

  • raw_data.insert(0,sheet_data)

  • print(each_sheet.name,":Datahasbeendone.")

  • returnraw_data

  • a=read_xls(xpath,xtype)

  • print("Victory")

  • 欢迎各种不一样的想法~~


❺ Python其实很简单 第十六章 目录管理

为实现“按名存取”,必须建立文件名与辅存空间中物理地址的对应关系,体现这种对应关系的数据结构称为文件目录。文件目录表目至少要包含文件名、文件的类型、文件的长度、访问权限、建立时间、访问时间和文件存储地址等内容。通过前面一章的介绍,我们已经知道在文件信息中已经包含了文件名、文件类型访问权限等信息,而存储地址的信息则包含在目录信息中。

16.1路径

路径通常用一个字符串来表示,可以按照路径信息定位到一个目录或文件。如:“C:UsersAdministratorPictures1.jpg”这个信息可以非常方便的找到这个图片文件,“C:UsersAdministratorPictures”这个信息可以帮助我们找到更多的图片文件。

这里所说的“路径”和上网时碰到的“地址”含义比较相似,互联网就相当于将个人电脑可以访问的范围扩大了,互联网中的地址也是对应某一个存储空间的路径,按照地址可以访问互联网上的信息,就如同按照路径可以找到计算机中的文件一样。

在Python中,可以导入 os模块 来进行目录操作。

1、获取当前工作目录getcwd()函数

例:

import os

print(os.getcwd())

运行结果:

C:

这个路径是当前Python IDLE所在的地址。

2、获取文件的绝对路径abspath()函数

abspath()函数是os模块的子模块path提供的一个函数。用法举例如下:

import os

print(os.path.abspath(r'test.txt'))

运行结果:

C: est.txt


16.2 目录操作类函数

1、判断目录是否存在exists()函数

exists()函数是os模块的子模块path中的函数。使用方法举例如下:

import os

print(os.path.exists(r'C:UsersAdministratorPictures1.jpeg'))

输出结果:

True

2、创建目录mkdir()函数和makedirs()函数

mkdir()函数和makedirs()函数都是由os模块提供的,下面举例说明用法和区别。

例1:

import os

path='d:test'

if not os.path.exists(path):

os.makedirs(path)

print('该文件目录创建成功!')

如果目录d: est已存在,则不再创建;若不存在,则创建。

例2:

import os

path='d:testtest1test11'

if not os.path.exists(path):

os.makedirs(path)

print('该文件目录创建成功!')

虽然目录d: est已存在,但可以在其下继续创建子目录。上面的代码可以成功地创建d: est est1 est11目录。

mkdir()函数和makedirs()函数用法基本一样,不同之处在于mkdir()函数只能能创建一级目录。

3、删除目录函数rmdir()函数

rmdir()函数是由os模块提供的。

例如:通过上面的例子已经建立了d: est est1 est11目录,现在去删除子目录test11(此子目录为空目录),代码如下:

import os

os.rmdir('d:testtest1test11')

如果要删除的目录非空(其下还包含有文件或文件夹),则不能删除,并且出现Windows文件操作错误的提示(Python是调用操作系统命令完成文件和目录操作的)。譬如d: est目录下含有有子目录,则不能对其进行如下删除操作。

import os

os.rmdir('d:test')

此时,会出现如下错误提示:

Traceback (most recent call last):

File "C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py", line 10, in

os.rmdir('d:test')

OSError: [WinError 145] 目录不是空的。: 'd:test'


4、删除非空目录函数rmtree()函数

rmtree()函数是由Python内置的标准模块shutil提供的,可以删除目录及目录下的文件和子目录。如删除d: est目录及其下的子目录和文件,可用如下代码:

import shutil

shutil.rmtree('d:test')

5、遍历目录walk()函数

walk()函数是由os模块提供的。

语法格式:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

其中,top是所要遍历的目录的地址;topdown为可选参数,为 True时自上而下遍历 目录,为False时自下而上遍历目录,默认值为True;onerror为可选参数,用于指定异常处理方式,默认为忽略;followlinks为可选参数,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。

该函数的返回值为一个三元组(root,dirs,files)。root 所指的是当前正在遍历的这个文件夹的本身的地址;dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录);files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)。

例:遍历d: est目录及其子目录下的所有子目录和文件:

d: est目录及其下的子目录和文件

import os

path='d:test'

tups=os.walk(path) # 函数walk()的返回值为三元组


for root,dirs,files in tups: # 遍历这个三元组

for name in dirs: #遍历存放目录值的元组

print('dir:',os.path.join(root,name))

for name in files: #遍历存放文件名值的元组

print('file:',os.path.join(root,name))


运行结果如下:

dir: d: est est1

dir: d: est est1 est11

dir: d: est est1新建文件夹

file: d: est est1新建文本文档.txt

file: d: est est1 est11新建文本文档.txt

❻ Python中os模块提供的与目录相关的函数有哪些呢

答案正确。以下是这些函数的具体说明:

os.getcwd():获取当前工作目录的路径名。
os.listdir(path):列出指定目录下的所有文件和子目录(不包含 . 和 .. 目录)。
os.mkdir(path[, mode]):创建一个新目录,其中 path 参数是要创建的目录路径名,mode 参数是可选的,指定目录权限,默认为 0777。
os.makedirs(path1/path2…[, mode]):递归创建多层目录结构,其中 path1/path2… 参数是要创建的目录路径名,在这个路径下逐层创建目录,并且可以递归创建多层带握目录,mode 参数是可选的,指定目录权限,默认为 0777。
os.rmdir(path):删除指定的目录,前提是这个目录必须为空,否则无法删除。
os.removedirs(path1/path2…):递归删除指定的目录及其中的所有空目录,其中 path1/path2… 参数是要删除的目录路径名,在递归删除过程中,若某个目录不为空,则不会被删除。
os.chdir(path):改变当前工作目录,其中 path 参数表示要切换的目录路径名。
os.walk(top[, topdown[, onerror]]):以目录树形式遍历指定目录下的所有文件和子目录,并返回一个三元组 (dirpath, dirnames, filenames),其中 dirpath 表示当前目录路径,dirnames 是当前目录下的所有子目录名,filenames 是当前目录下的所有非目录文件名。当 topdown 参数为 True 时,表示先遍历一级目录,再判断是否需要递归遍历其它子目录,默认值为 True;当 onerror 参数不为 None 时,表示如果在遍历目录树时遇到错误是否抛出异常(否则该错误直接被忽略),onerror 参数需要传入一个函数,接受三个参数,分别是出现错误的根目录、错误对象 Exception 和 traceback 对象。
以上是 os 模块中的蠢正庆一些常用目录相关函数。需要注意的是,对于一些有进行文件和目录操作的函数,一定要清枣注意操作的权限和路径的正确性,避免在操作时发生不必要的错误。

❼ Python中如何遍历指定目录下的所有文件

例如:在C:\TDDOWNLOAD目录下有a.txt、b.txt两个文件,另有\sub1子文件夹,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt两个文件。
1.
os.walk
os.walk()返回一个三元素的tuple:当前路径、子文件夹名称、文件列表。>>>
import
os>>>
def
fun(
path
):...
for
root,
dirs,
files
in
os.walk(
path
):...
for
fn
in
files:...
print
root,
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD
a.txtC:\TDDOWNLOAD
b.txtC:\TDDOWNLOAD\sub1
c.txtC:\TDDOWNLOAD\sub1
d.txt>>>
2.
glob.glob
glob.glob()只接受一个参数,这个参数既代有路径,又代有匹配模式,返回值为一个列表。注意,glob.glob()无法直接穿透子文件夹,需要自己处理:>>>
def
fun(
path
):...
for
fn
in
glob.glob(
path
+
os.sep
+
'*'
):
#
'*'代表匹配所有文件...
if
os.path.isdir(
fn
):
#
如果结果为文件夹...
fun(
fn
)
#
递归...
else:...
print
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD\a.txtC:\TDDOWNLOAD\b.txtC:\TDDOWNLOAD\sub1\c.txtC:\TDDOWNLOAD\sub1\d.txt>>>
'*'为匹配模式,代表匹配所有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。

❽ 求通过python实现,在指定目录下遍历所有文件,将以.txt为后缀的文件移动到另一指定目录中

target_dir = 'home/' #假定要拷贝到home目录
x = [ item for item in os.walk('.') ] #os.walk递归地遍历所有子文件夹
#返回的是一个list,list中每一个元素由3个部分:(path, dirs, files)
for path, dirs, files in x:
for file in files:
if file.endswith('.txt'): #找到以txt结尾的,之
shutil.( path+os.sep+file , target_dir )

热点内容
电脑如何避过联网查配置 发布:2024-11-29 01:25:16 浏览:971
期货软件编程 发布:2024-11-29 01:13:16 浏览:833
如何下载加密pdf文件 发布:2024-11-29 01:09:21 浏览:325
高通android开发 发布:2024-11-29 01:09:11 浏览:692
xp电脑无线网密码怎么看密码 发布:2024-11-29 01:08:30 浏览:123
恋爱剧脚本 发布:2024-11-29 00:59:58 浏览:574
安卓官方版阴阳师在哪里下载 发布:2024-11-29 00:59:50 浏览:416
全球有多少忘记密码丢失的比特币 发布:2024-11-29 00:59:02 浏览:668
苹果手机如何操作安卓三大键 发布:2024-11-29 00:58:55 浏览:165
凯美瑞混动版哪个配置值得买 发布:2024-11-29 00:54:49 浏览:238