Редактировать данную переменную в командном файле - PullRequest
0 голосов
/ 17 января 2019

У меня есть скрипт на python, который удаляет дубликаты файлов, которые задаются в скрипте параметром -i. Так как -i input.txt.

Я хочу, чтобы параметр -o, который является выходным именем файла, был таким: input-file-name-without-extension_dupsremoved.txt. Как -o input_dupsremoved.txt.

removeDups.py

import optparse


def removeDups(inputfile, outputfile):
        file1 = open(inputfile, "r")
        lines = file1.readlines()
        file1.close()
        out = open(outputfile, "w")
        out.writelines(uniquelines(lines))
        out.close()


def uniquelines(lineslist):
        unique = {}
        result = []
        for item in lineslist:
        if item.strip() in unique: continue
        unique[item.strip()] = 1
        result.append(item)
    return result

def main():
        parser = optparse.OptionParser('usage %prog ' +\
                        '-i <inputfile> -o <outputfile>')
        parser.add_option('-i', dest='inputfile', type='string',
                        help='specify your input file')
        parser.add_option('-o', dest='outputfile', type='string',
                        help='specify your output file')
        (options, args) = parser.parse_args()
       inputfile = options.inputfile
        outputfile = options.outputfile
        if (inputfile == None) or (outputfile == None):
                print (parser.usage)
                exit(1)
        else:
                removeDups(inputfile, outputfile)

if __name__ == '__main__':
        main()

Я сейчас использую этот пакетный файл, но пакетный файл неверен.

@echo off
set /p input= Input file: 
set output= output.txt
set dupsremoved= %input%_dupsremoved.txt
script1.py -i %input% -o %output%
script2.py -i %output% -o %dupsremoved%
del %output%

, который можно исправить с помощью ответа Герхарда Барнарда:

@echo off
setlocal enabledelayedexpansion
set /p "input=Input file: " 
set "output=output.txt"
set "ext=%input:*.=%
set "input=!input:.%ext%=!
set "dupsremoved=!input!_dupsremoved.txt"

script1.py -i %input% -o %output%
script2.py -i %output% -o %dupsremoved%
del %output%

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Если вы хотите изменить input.txt на input_dupsremoved.txt, вы можете использовать следующий код:

txt1 = "input.txt".split(".")[0]
txt2 = txt1 + ("_dupsremoved.txt")

Для таких операций я рекомендую ознакомиться с официальной документацией для строк: https://docs.python.org/3/library/string.html

0 голосов
/ 17 января 2019

Если вы хотите продолжить использовать ваш пакетный файл, то вот, пожалуйста. Этот метод использует delayedexpansion

@echo off
setlocal enabledelayedexpansion
set /p "input=Input file: " 
set "output=output.txt"
set "ext=%input:*.=%
set "input=!input:.%ext%=!
set "dupsremoved=!input!_dupsremoved.txt"

script1.py -i %input% -o %output%
script2.py -i %output% -o %dupsremoved%
del %output%

Также обратите внимание на проблемы в вашем скрипте, например, пробелы после = в команде set. если в команде set есть пробелы, они также будут в вашем значении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...