如何使用python代码选择最新的.txt在jupyter笔记本中运行(仅限python代码)

时间:2018-04-27 06:08:05

标签: python jupyter-notebook

为了您的信息,当我第一次在我的jupyter笔记本中执行以下代码时,它运行没有问题:

In  []: run txt2pdf.py Results/*.txt
Out []: Writing 'Results\A_2018_04_27_13_55.txt' with 80 characters per line and 
        60 lines per page...
        PDF document: 1 pages

但是在第二次,我执行相同的代码(希望它在生成最新版本的.txt文件后运行最新版本的.txt),它无法运行:

In [] : run txt2pdf.py Results/*.txt
Out []: usage: txt2pdf.py [-h] [--font FONT] [--font-size FONT_SIZE]
              [--extra-vertical-space EXTRA_VERTICAL_SPACE]
              [--kerning KERNING] [--media MEDIA]
              [--minimum-page-length MINIMUM_PAGE_LENGTH] [--landscape]
              [--margin-left MARGIN_LEFT] [--margin-right MARGIN_RIGHT]
              [--margin-top MARGIN_TOP] [--margin-bottom MARGIN_BOTTOM]
              [--output OUTPUT] [--author AUTHOR] [--title TITLE]
              [--quiet] [--subject SUBJECT] [--keywords KEYWORDS]
              [--break-on-blanks] [--encoding ENCODING] [--page-numbers]
              [--line-numbers]
              filename
txt2pdf.py: error: unrecognized arguments: Results\A_2018_04_27_13_57.txt
An exception has occurred, use %tb to see the full traceback.
SystemExit: 2

任何有用的解决方案都将非常感谢!谢谢!

1 个答案:

答案 0 :(得分:0)

只是一个疯狂的猜测 - 作为答案张贴,因为它不适合评论系统。

第一次只有一个文件。命令中的通配符将被shell扩展为:

./txt2pdf.py Results/first_file.txt

第二次有两个文件,命令扩展为:

./txt2pdf.py Results/first_file.txt Results/second_file.txt

你得到一个错误,因为txt2pdf不期望几个文件名(从错误信息中猜测,我们真的不知道你正在使用哪个txt2pdf.py)。

如果您使用的是类Unix操作系统,则可以尝试使用sh模块(未经测试):

import sh
from glob import glob
import os

# commenting line by line
def get_last_txt(path):
    return sorted(                         # sort
        glob(path + '/*.txt'),             # all files in the folder
        key=lambda f: os.stat(f).st_mtime  # by modified time
    )[-1]                                  # return the last one

然后你可以多次这样做:

sh.python('txt2pdf.py', get_last_txt("Results"))

如果尚未安装,则可能需要!pip install sh

如果您使用的是Windows,请转到Windows应用商店并安装Ubuntu。用于Windows的Linux子系统实际上将Windows机器转换为一个不错的开发工作站(我个人不喜欢Linux桌面,并且使用带有WSSL的Mac或Windows)。

如果您不愿意从Windows应用商店安装Ubuntu尝试用pbs替换sh模块 - 语法略有不同,因此您必须查看文档或use this hack替换上面的import sh (您可能必须先!pip install pbsconda install pbs):

try:
    import sh
except ImportError:
    # fallback: emulate the sh API with pbs
    import pbs
    class Sh(object):
        def __getattr__(self, attr):
            return pbs.Command(attr)
    sh = Sh()
相关问题