Python / wxPython에서 파일 입력을 변수로 처리하는 방법은 무엇입니까?

cmartin616

GUI로 이식하려는 작업 스크립트가 있습니다. 나는 프로그래밍에 익숙하지 않기 때문에이 코드의 대부분은 해킹이 될 수 있습니다. 나는 일반적인 관행과 방법에 대한 제안에 열려 있습니다! 다음은 이식하려는 함수의 작업 텍스트 기반 버전입니다.

def InitUI(self):
    self.pdf = None
    sizer = wx.BoxSizer(wx.VERTICAL)
    btnSizer = wx.BoxSizer(wx.HORIZONTAL)
    self.pdf = PDFWindow(self, style=wx.SUNKEN_BORDER)
    panel = wx.Panel(self)

    sizer.Add(self.pdf, proportion=1, flag=wx.EXPAND)

    pdfPicker = wx.FilePickerCtrl(self, wx.ID_ANY,message='Please select the PDF to resize.', wildcard='*.pdf', size=(500,20))
    btnSizer.Add(pdfPicker, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
    btnSizer.AddStretchSpacer(3)

    self.label = wx.StaticText(self, label='Enter Scale (decimal percent):')
    self.field = wx.TextCtrl(self, value="0.5", size=(50,20))

    btnSizer.Add(self.label, 0, wx.ALL, 8)
    btnSizer.Add(self.field, 0, wx.ALL, 8)

    # .... more GUI code (buttons, etc.)

def resize_file_main(resize, fileout, self, e=None)
    file1 = ask_file_name('resize1', 'input', '', inputDir)
    fileout = ask_file_name('resize1', 'output')
    input1 = str(file1) + '.pdf'
    dir1 = os.path.join(inputDir, input1)
    backup1 = os.path.join(backupDir, str(file1) + '.pdf')

    resize_file(input1)

    try:
        shutil.move(dir1, backup1)
        print input1, "has been successfully moved to the backup folder.\n"
    except:
        print_error('\nThe PDF you entered is opened elsewhere.  The file was not backed up.')
        print "Please move your scanned PDF from /input to /backup or run the backup utility.\n\n      Press enter to continue  ....  "
        print raw_input('')
    continue

def resize_file(filename, filename2 = None):
    output = PdfFileWriter()

    fIn1 = file(os.path.join(inputDir,filename), 'rb')

    inp1 = PdfFileReader(fIn1)
    p1 = inp1.getPage(0)
    p1.scale(.5,.5)
    output.addPage(p1)

    if filename2 is not None:
        fIn2 = file(os.path.join(inputDir,filename2), 'rb')
        inp2 = PdfFileReader(fIn2)
        p2 = inp2.getPage(0)
        p2.scale(.50,.50)
        output.addPage(p2)

    outputStream = file(os.path.join(validateDir,str(fileout) + '.pdf'),"wb")
    output.write(outputStream)
    outputStream.close()
    fIn1.close()

제 질문입니다. 모든 텍스트 기반 사용자 상호 작용을 제거하고 싶습니다. 객체 기반 입력을 어떻게 통과 가능한 변수로 바꾸나요? 사용자 입력을 입력하기 위해 wx.TextCtrl을 구현하고 입력을 위해 PDF를 선택하기 위해 wx.FilePickerCtrl을 구현할 수있었습니다. 이제 어떻게 :

  • 내 resize_file 함수에 변수로 전달합니까?
  • 출력 위치를 설정 하시겠습니까?
  • 백업 위치 설정 + PDF 이름 입력?
  • 내 resize_file 함수에 wx.TextCtrl 값 (스케일 용)을 전달합니까?

이것은 또한 내 문제 일 수 있습니다.

  1. 모든 wxPython 작업을 수행하는 InitUI 함수가 있습니다.
  2. InitUi 함수 내의 버튼은 resize_file_main을 호출합니다.
  3. resize_file_main은 입력 / 출력을 처리하고 최종 파일을 이동합니다. 또한 resize_file을 호출합니다.
  4. resize_file은 스크립트의 다른 여러 영역에서 재사용되는 함수입니다. 다양한 입력 / 출력을 받아 실제로 PDF 크기를 조정합니다.

이것은 나쁜 흐름입니까? resize_file을 호출하는 다른 영역의 입력 / 출력이 다르기 때문에 resize_file_main 및 resize_file을 결합하는 방법을 잘 모르겠습니다.

도와 주셔서 감사합니다! 나는 그것이 복잡하다는 것을 압니다!

편집 : 감사합니다! 앞으로 나아가기에 충분한 정보가 있다고 생각합니다. 도움을 주셔서 감사합니다.

Jaime

이 특정 질문에 대답하려면 :

객체 기반 입력을 어떻게 통과 가능한 변수로 바꾸나요?

컨트롤에 액세스하고 적절한 메서드를 호출합니다.

self.resize_txt.GetValue()
self.file_input.GetPath()
self.outfile_input.GetPath()

이들을 resize, 함수에 전달하려면 해당 값을 resize_file 함수에 전달하면됩니다.

resize_file(self.file_input.GetPath(),
            self.outfile_input.GetPath())

여기 TBH에 너무 많은 질문을하고 계십니다. 하나부터 시작하고 진행하면서 다른 것을 만들어야합니다.

도대체 점심 전에 죽일 시간이 있어요! 몇 가지 조언을 드리겠습니다.

이 함수를 살펴 보겠습니다.

def resize_file(filename, filename2 = None)

이 함수를 보면 함수에 대한 입력이 무엇인지 전혀 모릅니다. 파일 이름과 선택적 filename2가 표시됩니다. 다음 중 크기가 조정되는 것은 무엇입니까? 각 매개 변수의 기능을 어떻게 알 수 있습니까? 이 함수를 문서화하지 않았기 때문에 코드가 무엇을하는지 확인하기 위해 코드를 파헤 쳤습니다.

그래서, 나는 당신의 코드를 파헤 쳤습니다. 그리고이 특정 함수가 크기를 조정하고 아마도 pdf를 추가하는 것 같습니다. 코드에서 동일한 코드를 두 번 실행하는 방법에 유의하십시오.

fIn1 = file(os.path.join(inputDir,filename), 'rb')

inp1 = PdfFileReader(fIn1)
p1 = inp1.getPage(0)
p1.scale(.5,.5)
output.addPage(p1)

if filename2 is not None:
    fIn2 = file(os.path.join(inputDir,filename2), 'rb')
    inp2 = PdfFileReader(fIn2)
    p2 = inp2.getPage(0)
    p2.scale(.50,.50)
    output.addPage(p2)

이러지마 DRY 원칙을 사용하십시오 . 알고리즘은 기본적으로 동일하므로 루프가 있어야합니다. (점심 전에 시간이 부족한 루프 atm, 아마도 내가 돌아올 때 : P)

당신은 화려하고 기능이 무한한 양의 PDF 파일을 가져갈 수도 있습니다. 이 스 니펫을 확인하십시오.

def resize_file(*args):
    output = PdfFileWriter()

    for filename in args:
        fIn1 = file(os.path.join(inputDir, filename), 'rb')
        inp1 = PdfFileReader(fIn1)
        p1 = inp1.getPage(0)
        p1.scale(.5,.5)
        output.addPage(p1)

    outputStream = file(os.path.join(validateDir,str(fileout) + '.pdf'),"wb")
    output.write(outputStream)
    outputStream.close()

알았어, 거짓말을 했어. 점심 전에 이걸 짜내려고 했어. 위의 코드는 기본적으로 작동하지 않을 수 있지만 일반적인 방향을 가리켜 야합니다. 인수가 전달되지 않았는지 확인하기 위해 오류 포착을 추가해야합니다.

도움이 되었기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

여러 입력 파일을 사용하고 Python에서 병렬 처리를 수행하는 방법은 무엇입니까?

분류에서Dev

Google Dataflow 파일 처리의 입력 파일에서 행 수를 계산하는 방법은 무엇입니까?

분류에서Dev

Python에서 로거 파일 크기를 올바르게 처리하는 방법은 무엇입니까?

분류에서Dev

Emacs에서 파일 경로를 처리하는 방법은 무엇입니까?

분류에서Dev

asarray의 출력을 Python에서 일반 배열로 다시 변환하는 방법은 무엇입니까?

분류에서Dev

jq에서 일치 함수의 출력을 처리하는 방법은 무엇입니까?

분류에서Dev

Python 파일을 PowerShell 파일로 변환하는 방법은 무엇입니까?

분류에서Dev

Python 정규식을 사용하여 zookeeper 로그 파일을 처리하는 방법은 무엇입니까?

분류에서Dev

Windows 일괄 처리에서 모듈로 결과로 변수를 설정하는 방법은 무엇입니까?

분류에서Dev

Python에서 다중 처리로 여러 프로세스에서 생성 된 파일을 저장하는 가장 안전한 방법은 무엇입니까?

분류에서Dev

파일 입력에서 잘못된 utf8을 처리하는 방법은 무엇입니까?

분류에서Dev

tail -f에서 awk로 jq로 로그 파일을 처리하는 방법은 무엇입니까?

분류에서Dev

xml 파일을 파이썬에서 csv 출력으로 변환하는 방법은 무엇입니까?

분류에서Dev

awk에서 시간을 처리하고 출력을 csv 파일의 새 열로 스펀지하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

PowerShell에서 파일 대신 메모리로 출력을 리디렉션하는 방법은 무엇입니까?

분류에서Dev

Make : 한 번의 도구 호출로 많은 입력 파일을 처리하는 방법은 무엇입니까?

분류에서Dev

Make : 한 번의 도구 호출로 많은 입력 파일을 처리하는 방법은 무엇입니까?

분류에서Dev

Python에서 JSON의 텍스트 파일을 JSON 배열로 변환하는 방법은 무엇입니까?

분류에서Dev

파일에서 변수 값을 변경하는 방법은 무엇입니까?

분류에서Dev

Java에서 다른 줄 구분 기호로 파일을 처리하는 방법은 무엇입니까?

분류에서Dev

Java에서 다른 줄 구분 기호로 파일을 처리하는 방법은 무엇입니까?

분류에서Dev

Spark에서 탭으로 구분 된 파일을 처리하는 방법은 무엇입니까?

분류에서Dev

Python의 단일 input () 함수에서 두 개 이상의 입력을 얻는 방법은 무엇입니까?

분류에서Dev

전역 매개 변수에서 입력 파일을 읽고 수정하여 출력으로 보내는 방법은 무엇입니까? [XSLT]

분류에서Dev

.exe 파일 내에서 python으로 작성된 .exe 파일을 삭제하는 방법은 무엇입니까?

분류에서Dev

처리 된 텍스트 파일을 Python으로 압축하는 방법은 무엇입니까?

분류에서Dev

Python에서 사용자 입력 오류 처리를 수행하는 방법은 무엇입니까?

분류에서Dev

파일에서 stdout으로 출력을 리디렉션하는 방법은 무엇입니까?

분류에서Dev

Django Rest Framework에서 파일을 처리하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    여러 입력 파일을 사용하고 Python에서 병렬 처리를 수행하는 방법은 무엇입니까?

  2. 2

    Google Dataflow 파일 처리의 입력 파일에서 행 수를 계산하는 방법은 무엇입니까?

  3. 3

    Python에서 로거 파일 크기를 올바르게 처리하는 방법은 무엇입니까?

  4. 4

    Emacs에서 파일 경로를 처리하는 방법은 무엇입니까?

  5. 5

    asarray의 출력을 Python에서 일반 배열로 다시 변환하는 방법은 무엇입니까?

  6. 6

    jq에서 일치 함수의 출력을 처리하는 방법은 무엇입니까?

  7. 7

    Python 파일을 PowerShell 파일로 변환하는 방법은 무엇입니까?

  8. 8

    Python 정규식을 사용하여 zookeeper 로그 파일을 처리하는 방법은 무엇입니까?

  9. 9

    Windows 일괄 처리에서 모듈로 결과로 변수를 설정하는 방법은 무엇입니까?

  10. 10

    Python에서 다중 처리로 여러 프로세스에서 생성 된 파일을 저장하는 가장 안전한 방법은 무엇입니까?

  11. 11

    파일 입력에서 잘못된 utf8을 처리하는 방법은 무엇입니까?

  12. 12

    tail -f에서 awk로 jq로 로그 파일을 처리하는 방법은 무엇입니까?

  13. 13

    xml 파일을 파이썬에서 csv 출력으로 변환하는 방법은 무엇입니까?

  14. 14

    awk에서 시간을 처리하고 출력을 csv 파일의 새 열로 스펀지하는 가장 좋은 방법은 무엇입니까?

  15. 15

    PowerShell에서 파일 대신 메모리로 출력을 리디렉션하는 방법은 무엇입니까?

  16. 16

    Make : 한 번의 도구 호출로 많은 입력 파일을 처리하는 방법은 무엇입니까?

  17. 17

    Make : 한 번의 도구 호출로 많은 입력 파일을 처리하는 방법은 무엇입니까?

  18. 18

    Python에서 JSON의 텍스트 파일을 JSON 배열로 변환하는 방법은 무엇입니까?

  19. 19

    파일에서 변수 값을 변경하는 방법은 무엇입니까?

  20. 20

    Java에서 다른 줄 구분 기호로 파일을 처리하는 방법은 무엇입니까?

  21. 21

    Java에서 다른 줄 구분 기호로 파일을 처리하는 방법은 무엇입니까?

  22. 22

    Spark에서 탭으로 구분 된 파일을 처리하는 방법은 무엇입니까?

  23. 23

    Python의 단일 input () 함수에서 두 개 이상의 입력을 얻는 방법은 무엇입니까?

  24. 24

    전역 매개 변수에서 입력 파일을 읽고 수정하여 출력으로 보내는 방법은 무엇입니까? [XSLT]

  25. 25

    .exe 파일 내에서 python으로 작성된 .exe 파일을 삭제하는 방법은 무엇입니까?

  26. 26

    처리 된 텍스트 파일을 Python으로 압축하는 방법은 무엇입니까?

  27. 27

    Python에서 사용자 입력 오류 처리를 수행하는 방법은 무엇입니까?

  28. 28

    파일에서 stdout으로 출력을 리디렉션하는 방법은 무엇입니까?

  29. 29

    Django Rest Framework에서 파일을 처리하는 방법은 무엇입니까?

뜨겁다태그

보관