映射到os.rename多个文件

时间:2019-11-20 03:44:42

标签: python-3.x

我有这样的程序

#+begin_src ipython :session alinbx :results output
import os
import glob
import copy

fs = os.listdir()
fs = filter(lambda x: not x.endswith("org"), fs)
fsc = copy.deepcopy(fs)
print(list(fsc)[:5])
# map(lambda x: os.rename(x, f"{x}.org"), fs)
#+end_src

#+RESULTS:
: ['19.Pseudo-Terminals', '12.Thread-Control', '05.Standard-IO-Library', '07.Process-Environment', '03.File-IO']

稍后,将org添加到名称

#+begin_src ipython :session alinbx :results output
map(lambda x: os.rename(x, x+'.org'), fs)
! ls | head -n 5
#+end_src

#+RESULTS:
: 00.Preface.org
: 01.UNIX-System-Overvie
: 01.xhtml
: 02.UNIX-Standardization-and-Implementations
: 03.File-IO

它不起作用,因此对于循环起作用

#+begin_src ipython :session alinbx :results output
for f in fs:
    os.rename(f, f"{f}.org")
! ls | head -n 5
#+end_src

#+RESULTS:
: 00.Preface.org
: 01.UNIX-System-Overview.org
: 01.xhtml.org
: 02.UNIX-Standardization-and-Implementations.org
: 03.File-IO.org

别让python不欣赏函数式编程,为什么map不起作用是什么原因?

1 个答案:

答案 0 :(得分:2)

您需要使用map返回的迭代器。尝试

slow_clk