小编rya*_*n_m的帖子

我可以强制python3的os.walk按字母顺序访问目录吗?怎么样?

我想知道是否可以在python3中强制os.walk按字母顺序访问目录.例如,这是一个目录和一些将遍历此目录的代码:

ryan:~/bktest$ ls -1 sample
CD01
CD02
CD03
CD04
CD05

--------

def main_work_subdirs(gl):
    for root, dirs, files in os.walk(gl['pwd']):
        if root == gl['pwd']:
            for d2i in dirs:
                print(d2i)
Run Code Online (Sandbox Code Playgroud)

当python代码点击上面的目录时,输出如下:

ryan:~/bktest$ ~/test.py sample
CD03
CD01
CD05
CD02
CD04
Run Code Online (Sandbox Code Playgroud)

我想强迫步行按字母顺序访问这些目录01, 02 ... 05.在python3 doc中os.walk,它说:

当topdown为True时,调用者可以就地修改dirnames列表(可能使用del或slice赋值),而walk()只会递归到名称保留在dirnames中的子目录中; 这可以用来修剪搜索,强加一个特定的访问顺序

这是否意味着我可以强加一个按字母顺序排列的访问顺序os.walk?如果是这样,怎么样?

os.walk python-3.x

25
推荐指数
2
解决办法
5072
查看次数

使用sed从完整路径获取文件名?

我是sed的新手,需要从输出中获取文件名find.我需要找到输出我的脚本的另一部分的整个路径,但我想只打印没有路径的文件名.我还需要从行的开头开始匹配,而不是从结尾开始.在英语中,我想匹配,第一组以".txt"结尾的字符不包含"/".这是我的尝试不起作用:

ryan@fizz:~$ find /home/ryan/Desktop/test/ -type f -name \*.txt
/home/ryan/Desktop/test/two.txt
/home/ryan/Desktop/test/one.txt
ryan@fizz:~$ find /home/ryan/Desktop/test/ -type f -name \*.txt | sed s:^.*/[^*.txt]::g
esktop/test/two.txt
ne.txt
Run Code Online (Sandbox Code Playgroud)

这是我想要的输出:

two.txt
one.txt
Run Code Online (Sandbox Code Playgroud)

好的,所以提供的解决方案回答了我原来的问题,但我想我错了.我不想杀死我正在搜索的文件后缀的其余部分.所以,更清楚的是,如果如下:

bash$ new_mp3s=\`find mp3Dir -type f -name \*.mp3\` && cp -rfv $new_mp3s dest
 `/mp3Dir/one.mp3' -> `/dest/one.mp3'
 `/mp3Dir/two.mp3' -> `/dest/two.mp3'
Run Code Online (Sandbox Code Playgroud)

我想要的是:

bash$ new_mp3s=\`find mp3Dir -type f -name \*.mp3\` && cp -rfv $new_mp3s dest | sed ???
 `one.mp3' -> `/dest'
 `two.mp3' -> `/dest'
Run Code Online (Sandbox Code Playgroud)

对困惑感到抱歉.我原来的问题刚刚涵盖了我想要做的第一部分.

第二次编辑:这是我想出的:

DEST=/tmp && cp -rfv `find /mp3Dir -type f …
Run Code Online (Sandbox Code Playgroud)

sed

12
推荐指数
3
解决办法
2万
查看次数

emacs组织模式:我的表中有多少行?

我的表中的$ 1列只是一个i ++值,1,2,3 ...... n其中n是第2和第3个hline之间的行数.是否有一个函数我可以调用告诉我在我的表的那一部分有多少行,或者,如果我想能够引用一个变量,即我表中的行数,我是否必须跟踪它像这样手动吗?所以我想要做的是以下,而不必使用计数列.

@7$1 = Total(5), where "5" is the number of rows between the 2nd and 3rd hline

| num rows | x | y |
|----------+---+---|
|        1 |   |   |
|        2 |   |   |
|        3 |   |   |
|        4 |   |   |
|        5 |   |   |
|----------+---+---|
| Total(5) |   |   |
|----------+---+---|
#+TBLFM: @7$1=Total(@-1) 
Run Code Online (Sandbox Code Playgroud)

所以这就是我现在所拥有的,我希望能够获得2个小时之间的行数,而不必使用专用列来保持计数.

org-mode

3
推荐指数
1
解决办法
597
查看次数

ruby并行分配,步问题

所以,我正在尝试通过做一些项目的euler问题来学习ruby,而且我遇到了一些我无法解释的事情和逗号?运算符?是在两者的中间.我一直无法找到这方面的好文档,也许我只是不按照我应该使用谷歌,但好的ruby文档似乎有点稀疏...

1:您如何描述这是如何工作的?第一个片段是我不理解的ruby代码,第二个是我编写的代码,只有在精心跟踪第一个代码后才会执行相同的操作:

#what is this doing?
cur, nxt = nxt, cur + nxt

#this, apparently, but how to describe the above?
nxt = cur + nxt   
cur = nxt - cur   
Run Code Online (Sandbox Code Playgroud)

2:在下面的例子中,你如何描述'step'行正在做什么?从我可以收集的内容来看,step命令的工作方式类似于(range).step(step_size),但这似乎在做(starting_point).step(ending_point,step_size).我对这个假设是对的吗?我在哪里可以找到这方面的优秀文件?

#/usr/share/doc/ruby1.9.1-examples/examples/sieve.rb  
# sieve of Eratosthenes
max = Integer(ARGV.shift || 100)
sieve = []
for i in 2 .. max
  sieve[i] = i
end

for i in 2 .. Math.sqrt(max)
  next unless sieve[i]
  (i*i).step(max, i) do |j|
    sieve[j] = nil
  end
end
puts sieve.compact.join(", ")
Run Code Online (Sandbox Code Playgroud)

ruby mass-assignment

0
推荐指数
1
解决办法
1409
查看次数

标签 统计

mass-assignment ×1

org-mode ×1

os.walk ×1

python-3.x ×1

ruby ×1

sed ×1