我正在寻找一个linux命令来从当前目录及其子目录中获取超过一定大小的所有文件.
什么是删除所有这些文件的最简单方法?
鉴于这段代码:
from glob import glob, iglob
for fn in glob('/*'):
print fn
print ''
for fn in iglob('/*'):
print fn
Run Code Online (Sandbox Code Playgroud)
阅读glob 的文档我看到glob()返回一个基本的文件列表,iglob是一个Iterator.但是,我能够迭代两者,并且每个文件返回相同的文件列表.
我已经阅读了有关Iterator的文档,但它还没有真正了解这个主题!
那么iglob()返回一个Iterator会给我带来glob()的列表有什么好处呢?我是否能从我的老朋友那里获得额外的功能?
Python 3.5的os.scandir(path)函数返回轻量级DirEntry对象,这些对象对文件信息非常有帮助.但是,它只适用于传递给它的直接路径.有没有办法将它包装在递归函数中,以便它访问给定路径下的所有子目录?
我还是Python的新手(使用2.6),我只是在文件名可用时尝试对系统进行全系统搜索,并在Windows上返回绝对路径.我搜索并发现了一些像scriptutil.py这样的模块,并查看了os模块,但没有找到任何适合我需要的东西(或者我可能没有正确理解所有内容以将它应用到我需要的东西,因此没有包括任何码).我将不胜感激任何帮助.
谢谢.
我想将文件从复杂的目录结构移动到一个地方。例如,我有这个深层次的层次结构:
foo/
foo2/
1.jpg
2.jpg
...
Run Code Online (Sandbox Code Playgroud)
我希望它是:
1.jpg
2.jpg
...
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案:
def move(destination):
for_removal = os.path.join(destination, '\\')
is_in_parent = lambda x: x.find(for_removal) > -1
with directory(destination):
files_to_move = filter(is_in_parent,
glob_recursive(path='.'))
for file in files_to_move:
shutil.move(file, destination)
Run Code Online (Sandbox Code Playgroud)
定义:directory和glob_recursive。请注意,我的代码仅将文件移动到它们的公共父目录,而不是任意目标。
如何简洁优雅地将所有文件从复杂的层次结构移动到一个地方?
我一直在使用-WdPython的说法,发现吨的变化我需要为了准备我升级到2.0的Django
python -Wd manage.py runserver
Run Code Online (Sandbox Code Playgroud)
主要on_delete是由于成为必需的参数。
RemovedInDjango20Warning: on_delete 将是 Django 2.0 中 ForeignKey 的必需参数。
models.CASCADE如果您想保持当前的默认行为,请将其设置为on models 和 in existing migrations。请参阅https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.ForeignKey.on_delete
是否有一个简单的正则表达式(或方法)可以用来放入on_delete我的所有外键?
你好我试着做点什么
// 1. for x in glob.glob('/../../nodes/*/views/assets/js/*.js'):
// 2 .for x in glob.glob('/../../nodes/*/views/assets/js/*/*.js'):
print x
Run Code Online (Sandbox Code Playgroud)
有什么办法可以回忆搜索吗?
我已经研究过使用Glob()在Python中递归查找文件?但是os.walk不接受节点和视图之间的上面的通配符文件夹,以及http://docs.python.org/library/glob.html那些非常有用的文档.
谢谢
在GNU/Linux系统上的Python中,以递归方式扫描所有.MOV或.AVI文件的目录并将它们存储在列表中的最快方法是什么?
我知道如何d:\temp使用各种方法递归列出所有文件/文件夹,请参阅如何使用 glob() 递归查找文件?.
但通常我想避免d:\temp\在结果中使用前缀,而是使用到此基的相对路径。
这可以通过以下方式完成:
import os, glob
for f in glob.glob('d:\\temp\\**\\*', recursive=True):
print(os.path.relpath(f, 'd:\\temp'))
Run Code Online (Sandbox Code Playgroud)
f.lstrip('d:\\temp\\')删除此前缀的同上
import pathlib
root = pathlib.Path("d:\\temp")
print([p.relative_to(root) for p in root.glob("**/*")])
Run Code Online (Sandbox Code Playgroud)
这3个解决方案有效。但实际上,如果您阅读 的来源glob.py,它确实会累积/加入路径的所有部分。所以上面的解决方案是......“删除之前刚刚添加的内容”!它有效,但不是很优雅。同上用于pathlib与relative_to该删除的前缀。
问题:如何修改接下来的几行以使其不在d:\temp输出中(不删除之前连接的内容!)?
import os
def listpath(path):
for f in os.scandir(path):
f2 = os.path.join(path, f)
if os.path.isdir(f):
yield f2
yield from listpath(f2)
else:
yield f2
for f in listpath('d:\\temp'):
print(f)
#d:\temp\New folder
#d:\temp\New folder\New Text Document - …Run Code Online (Sandbox Code Playgroud) 我一直在尝试sys.argv[1]使用glob.glob和递归地获取命令行参数()中与glob模式匹配的文件列表os.walk.问题是,bash(以及它看起来很多其他shell)会自动将glob模式扩展为文件名.
标准的unix程序(例如grep -R)如何执行此操作?我意识到他们不是在python中,但如果这种情况发生在shell级别,那应该不重要,对吧?有没有办法让脚本告诉shell不自动扩展glob模式?它似乎set -f会禁用通配,但我不知道如何尽早运行,可以这么说.
我见过使用Glob()在Python中递归查找文件?,但这并不包括实际从命令行参数获取glob模式.
谢谢!
编辑:
grep-like perl脚本ack接受perl正则表达式作为其参数之一.因此,ack .*打印出每个文件的每一行.但是.*应该扩展到目录中的所有隐藏文件.我试过阅读剧本,但我不知道perl; 它怎么能这样做?
我正在尝试编写一个 python 脚本,以递归方式列出给定目录中具有绝对路径的所有文件,并在它们前面列出它们的 UID 和文件所有者。(类似于: ls -lR )我写了这个,但它在执行结束时给了我一个错误:
import os
for folder, subfolders, files in os.walk(os.getcwd()):
for file in files:
filePath = os.path.abspath(file)
print(filePath, os.stat(file).st_uid)
Run Code Online (Sandbox Code Playgroud) 我正在搜索所有.csv位于子文件夹中,glob如下所示:
def scan_for_files(path):
file_list = []
for path, dirs, files in os.walk(path):
for d in dirs:
for f in glob.iglob(os.path.join(path, d, '*.csv')):
file_list.append(f)
return file_list
Run Code Online (Sandbox Code Playgroud)
如果我打电话:
path = r'/data/realtimedata/trades/bitfinex/'
scan_for_files(path)
我得到了正确的递归文件列表:
['/data/realtimedata/trades/bitfinex/btcusd/bitfinex_btcusd_trades_2018_05_12.csv',
'/data/realtimedata/trades/bitfinex/btcusd/bitfinex_btcusd_trades_2018_05_13.csv',
'/data/realtimedata/trades/bitfinex/btcusd/bitfinex_btcusd_trades_2018_05_15.csv',
'/data/realtimedata/trades/bitfinex/btcusd/bitfinex_btcusd_trades_2018_05_11.csv',
'/data/realtimedata/trades/bitfinex/btcusd/bitfinex_btcusd_trades_2018_05_09.csv',
'/data/realtimedata/trades/bitfinex/btcusd/bitfinex_btcusd_trades_2018_05_10.csv',
'/data/realtimedata/trades/bitfinex/btcusd/bitfinex_btcusd_trades_2018_05_08.csv',
'/data/realtimedata/trades/bitfinex/btcusd/bitfinex_btcusd_trades_2018_05_14.csv',
'/data/realtimedata/trades/bitfinex/ethusd/bitfinex_ethusd_trades_2018_05_14.csv',
'/data/realtimedata/trades/bitfinex/ethusd/bitfinex_ethusd_trades_2018_05_12.csv',
'/data/realtimedata/trades/bitfinex/ethusd/bitfinex_ethusd_trades_2018_05_10.csv',
'/data/realtimedata/trades/bitfinex/ethusd/bitfinex_ethusd_trades_2018_05_08.csv',
'/data/realtimedata/trades/bitfinex/ethusd/bitfinex_ethusd_trades_2018_05_09.csv',
'/data/realtimedata/trades/bitfinex/ethusd/bitfinex_ethusd_trades_2018_05_15.csv',
'/data/realtimedata/trades/bitfinex/ethusd/bitfinex_ethusd_trades_2018_05_11.csv',
'/data/realtimedata/trades/bitfinex/ethusd/bitfinex_ethusd_trades_2018_05_13.csv']
Run Code Online (Sandbox Code Playgroud)
但是当使用包含我想要的文件的实际子目录时 - 它返回一个空列表.知道为什么会这样吗?谢谢.
path = r'/data/realtimedata/trades/bitfinex/btcusd/'
scan_for_files(path)
收益: []
我从 sonarlint 看到这条消息,并试图找出如何降低此功能的认知复杂性。提前感谢任何帮助。
import os
import json
import click
import hcl
cfn = [".json", ".template", ".yaml", ".yml"]
tf = ["tf"]
def file_handler(dir):
for root, dirs, files in os.walk(dir):
for file in files:
if file.endswith(tuple(cfn)):
with open(os.path.join(root, file), 'r') as fin:
try:
file = fin.read()
if "AWSTemplateFormatVersion" in file:
data = json.dumps(file)
print(data)
except ValueError as e:
raise SystemExit(e)
elif file.endswith(tuple(tf)):
with open(os.path.join(root, file), 'r') as file:
try:
obj = hcl.load(file)
data = json.dumps(obj)
print(data)
except ValueError as e:
raise SystemExit(e) …Run Code Online (Sandbox Code Playgroud) python ×11
glob ×3
linux ×2
argv ×1
bash ×1
delete-file ×1
django ×1
file ×1
file-move ×1
filesystems ×1
flatten ×1
iterator ×1
list ×1
optimization ×1
os.path ×1
pathlib ×1
python-2.7 ×1
python-3.x ×1
recursion ×1
regex ×1
search ×1
sonarlint ×1
uid ×1