python - 创建逗号分隔的路径列表(允许路径中存在空格),并将结果作为变量传递以供再次使用

标签 python linux bash awk sed

我正在尝试使用 rtcontrol 的输出( Pyroscope 的一部分),用于控制 rtorrent从命令行。我在格式化一个调用的输出以用作另一个调用的输入时遇到问题

我希望能够只选择满足该条件的 torrent,但不与其他 torrent 共享路径。

流程如下

PATHS=$(rtcontrol ratio=+2 completed=+5d -qopath)

echo $PATHS
# Output
# /home/user/path/name1
# /home/user/path/name2
# /home/user/path/name 3
# /home/user/path/name 3
# /home/user/path/name 4
# /home/user/path/name5

# Remove duplicates paths and convert $PATHS to comma delimited variable PATHS.
#
# UNSURE HERE....
#
# PATHS="/home/user/path/name1","/home/user/path/name2","/home/user/path/name 3","/home/user/path/name 4","/home/user/path/name5"

#Pass PATHS to rtcontrol again to get torrents in one of the paths.
PATHS_2=$(rtcontrol path=$PATHS -qopath)

echo $PATHS_2
#output
#/home/user/path/name1
#/home/user/path/name1
#/home/user/path/name2
#/home/user/path/name 3
#/home/user/path/name 3
#/home/user/path/name 4
#/home/user/path/name5

# Remove duplicates and convert $PATHS_2 to comma delimited variable.
#
# UNSURE HERE....
#
# PATHS_2="/home/user/path/name2","/home/user/path/name 3","/home/user/path/name 4","/home/user/path/name5"

#Pass to rtcontrol to perform action
rtcontrol path=$PATHS_2 --cull

原因是种子可能不满足条件或 ratio=+2 Completed=+5d,但具有与满足条件的路径相同的路径。这就是第二次调用rtcontrol path=$PATHS -qopath

的原因

我尝试了 uniq、sed 和 awk 的不同组合以及使用管道传递输出。应该注意的是,rtcontrol 输出可以通过管道输出,例如rtcontrol name="*Test* -qoname|uniq -u

这可以用纯 bash 或 Python 来处理。还有一些 Python 库可以与 torrent 程序交互,可以执行类似的功能,甚至是我正在研究的更高级的功能。

最佳答案

 #!/bin/python
 import os
 import sys

 paths = {}
 for line in sys.stdin:
   path = line.strip()
   paths[path] = path
 print ','.join( sorted( paths.keys() )
 exit( 0 )

关于python - 创建逗号分隔的路径列表(允许路径中存在空格),并将结果作为变量传递以供再次使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30136438/

相关文章:

python - 为什么这个单例概念不会产生无限循环?

python - 如何处理名称冲突的 python 包?

android - Linux挂起/恢复代码流程(在安卓手机上)

Bash 算术 $number != $((number))

bash:写入 unicode 文件

python - 我可以为 numpy 预先计算/预先生成伪随机数吗?

python - 使用 Cython 将 Python 链接到共享库

linux - Linux下的DMA和I/O内存区域

python - serial.serialutil.SerialException : [Errno 16] could not open port: [Errno 16] device or resource busy: '/dev/ttyACM0'

bash - 快速帮助 bash 脚本删除大文件的行