我试图在Mac OS X 10.6.4上运行bash中的以下脚本(来自这个问题):
$ export EDITOR='mvim -f -c "au VimLeave * !open -a Terminal"'
Run Code Online (Sandbox Code Playgroud)
唉,我得到的是意想不到的东西:
$ echo $ EDITOR
mvim -f -c"au VimLeave桌面文档下载库电影音乐图片公共站点bin!open -a Terminal"
预期的产出是:
$ echo $ EDITOR
mvim -f -c"au VimLeave*!open -a Terminal"
解决此问题的方法是设置noglob,即set -f在export分配之前立即运行.但是,问题在于这是否是Mac OS X上的预期行为,因为(因为noglob默认情况下未设置,即set +f)或者因为bashMac OS X上存在错误.
bash的版本是:
$ bash --version GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0) Copyright (C) 2007 Free Software Foundation, Inc.
通过第329页的方式可能会有一些帮助A practical guide to Unix …
我有大约一千个以半合理方式命名的文件,如下所示:
aaa.ba.ca.01
aaa.ba.ca.02
aaa.ba.ca.03
aaa.ba.da.01
aaa.ba.da.02
aaa.ba.da.03
Run Code Online (Sandbox Code Playgroud)
等等.假设每个文件包含2列数字,我需要读入字典:波长,通量.部分阅读对我来说很容易,困难的是我需要加载这些词典,以便它们存储如下信息:
波长['aaa.ba.ca.01'](这是一个文件的波长)
波长['aaa.ba.ca'](所有子文件的波长,即... ca.01,... ca.02,... ca.03 - 按顺序)
波长['aaa.ba'](也包括所有"子文件"的所有波长 - 再次依次).
等等.文件名表现良好(各部分由句点分隔,分组层次结构总是相同的方向等)但文件可以在4个部分之间,或8个部分长.
我的问题:是否有一些明智的方法让python glob得到文件的名称,通过解析字符串或其他一些魔法将数据输入这些词典?我撞到了一堵砖墙.
我想获得名称如下所有文件的列表: $res_dir/$line/$fub_name*.istf
含义:在$dir子目录的目录中$line以一个$name以及以... 开头和结尾的文件.istf.
每个子目录只包含1个这样的文件,但是有很多子目录.我写过:
foreach $line (@arr){
chomp ($line);
$new_istf = glob ("$res_dir/$line/$fub_name*.istf");
do something...
Run Code Online (Sandbox Code Playgroud)
但它没有给我所有的文件,但只有一半.当我添加了以下的调试代码:
if ($new_istf){
print "\tdbug:: $res_dir/$line/$fub_name*.istf:\t'$new_istf'\n";
} else {
print "\tdbug:: $res_dir/$line/$fub_name*.istf:\t''\n";
}
Run Code Online (Sandbox Code Playgroud)
结果输出是:
dbug:: RESULTS//791202_0_SA0/ieuni5cts*.istf: 'RESULTS//791202_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791212_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791241_0_SA0/ieuni5cts*.istf: 'RESULTS//791241_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791248_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791251_0_SA0/ieuni5cts*.istf: 'RESULTS//791251_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791258_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791272_0_SA0/ieuni5cts*.istf: 'RESULTS//791272_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791273_0_SA1/ieuni5cts*.istf: ''
dbug:: RESULTS//791301_0_SA0/ieuni5cts*.istf: 'RESULTS//791301_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791333_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791349_0_SA0/ieuni5cts*.istf: 'RESULTS//791349_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791357_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791405_0_SA1/ieuni5cts*.istf: 'RESULTS//791405_0_SA1/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791432_0_SA0/ieuni5cts*.istf: '' …Run Code Online (Sandbox Code Playgroud) 我bash在Fedora 16上使用版本4.2.28.我有extglob选项设置.我试图列出所有匹配*.h或*.cpp使用的文件,ls *(h|cpp)但该命令返回以下内容:
[agnel@damien cadcore]$ ls *(h|cpp)
ls: cannot access *(h|cpp): No such file or directory
Run Code Online (Sandbox Code Playgroud)
我已经验证我当前目录中确实有几个.h和.cpp文件.我做错了什么,或者这可能是一个错误bash或ls?
更新:感谢您的回答.使用*.h *.cpp做我需要的.但是,我仍然想知道为什么extglob不像我预期的那样工作.
如何使用PHP glob()函数获取多个文件夹中的所有文件的列表?
像这样的东西: glob("data/['folder1', 'folder2']/*");
我在目录(mytest.)中有一个带有3个或更多后缀(" .txt ",".shp",".shx",".dbf ")的文件名(path = 'C://sample').我希望列出所有具有相同名称的文件
我知道import glob可以列出具有特定后缀的所有文件
我的问题是如何列出目录中的所有"mytest"
ex
mytest.txt
mytest.shp
mytest.bdf
mytest.shx
mylist = ["mytest.txt","mytest.shp","mytest.bdf","mytest.shx"]
mytest.txt
mytest.shp
mytest.bdf
mytest.shx
mytest.pjr
mylist = ["mytest.txt","mytest.shp","mytest.bdf","mytest.shx","mytest.pjr"]
Run Code Online (Sandbox Code Playgroud) 我试图通过使用请求和全局将本地驱动器上的文件夹中的所有文件发布到某个Web URL.每次我将新文件发布到URL时,我想在字典中添加一个新的"键值"项,即"文件名(密钥),在POST文件后输出服务器(值)":
import requests, glob, unicodedata
outputs = {}
text_files = glob.iglob("/Users/ME/Documents/folder/folder/*.csv")
url = 'http://myWebsite.com/extension/extension/extension'
for data in text_files:
file2 = {'file': open(data)}
r = requests.post(url, files=file2)
outputs[file2] = r.text
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
Traceback (most recent call last):
File "/Users/ME/Documents/folder/folder/myProgram.py", line 15, in <module>
outputs[file2] = r.text
TypeError: unhashable type: 'dict'
Run Code Online (Sandbox Code Playgroud)
这是因为(我认为)"file2",如果是'dict'类型.无论如何,在我将它发送到文件名的字符串之后,是否要转换/更改'file2' ?
如何使用glob()函数获取存储在特定文件夹中的文件的特定名称?我有一个示例源代码,但有不同的输出,它显示文件的完整路径,而不是只显示特定的文件名.如何仅从路径集中检索文件名,或者如何直接访问并获取特定文件名?谢谢!
@files = glob('/Perl/Assignment/*');
foreach $files(@files){
print "$files\n";
}
Run Code Online (Sandbox Code Playgroud)
输出:
/Perl/Assignment/file1.txt
/Perl/Assignment/file2.txt
/Perl/Assignment/file3.txt
Run Code Online (Sandbox Code Playgroud)
预期产量:
file1.txt
file2.txt
file3.txt
Run Code Online (Sandbox Code Playgroud) 如果我在bash脚本中没有满足我的参数,那么寻找一种扩展glob的方法,我不是积极的,但我认为它可能需要eval或类似的东西,但我不记得了我的头.
功能
function search ()
{
[ 'x' == "${2}x" ] && {
what="*"
} || {
what="${2}"
}
grep -n -Iir "${1}" "${what}"
}
Run Code Online (Sandbox Code Playgroud)
没有arg2的预期结果
grep -n -Iir 'something' * ## ran as the normal command
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)
收益: []