相关疑难解决方法(0)

Python中的mkdir -p功能

有没有办法mkdir -p在Python中获得类似于shell的功能.我正在寻找除系统调用之外的解决方案.我确信代码少于20行,我想知道是否有人写过它?

python mkdir

756
推荐指数
9
解决办法
37万
查看次数

同步shell脚本执行

shell脚本的修改版本将音频文件从FLAC转换为MP3格式.该计算机具有四核CPU.该脚本使用以下命令运行:

./flac2mp3.sh $(find flac -type f)
Run Code Online (Sandbox Code Playgroud)

这会将flac目录中的FLAC文件(文件名中没有空格)转换为mp3目录中的MP3文件(与文件名相同flac).如果目标MP3文件已存在,则脚本将跳过该文件.

问题是,有时两个脚本实例几乎同时检查是否存在相同的MP3文件,导致MP3文件损坏.

如何多次运行脚本(即每个核心一次),而不必在每个命令行上指定不同的文件集,而不覆盖工作?

更新 - 最小竞争条件

该脚本使用以下锁定机制:

  # Convert FLAC to MP3 using tags from flac file.
  #
  if [ ! -e $FLAC.lock ]; then
    touch $FLAC.lock
    flac -dc "$FLAC" | lame${lame_opts} \
      --tt "$TITLE" \
      --tn "$TRACKNUMBER" \
      --tg "$GENRE" \
      --ty "$DATE" \
      --ta "$ARTIST" \
      --tl "$ALBUM" \
      --add-id3v2 \
      - "$MP3"
    rm $FLAC.lock
  fi;
Run Code Online (Sandbox Code Playgroud)

然而,这仍然留下了竞争条件.

linux bash shell multiprocessing race-condition

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

哪个在Python中更快:if或try

请考虑以下代码:

def readPath(path):
   content = None
   if os.path.isfile(path):
      f = open(path,"rb")
      content = f.read()
      f.close()
   return content
Run Code Online (Sandbox Code Playgroud)

与这一个:

def readPath(path):
   content = None
   try:
      f = open(path,"rb")
      content = f.read()
      f.close()
   except:
     pass
   return content
Run Code Online (Sandbox Code Playgroud)

鉴于def被连续调用多次(数百到数千次),主要是使用有效路径(代表文件系统上的实际文件),但有时使用不存在的路径,哪个版本更有效?在打开文件之前检查条件是否比设置try块慢?

python

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

标签 统计

python ×2

bash ×1

linux ×1

mkdir ×1

multiprocessing ×1

race-condition ×1

shell ×1