2017-05-26 40 views
0

ファイル内のテキストを+1してファイル名を+1して保存する単純なスクリプトを作成しようとしています。そこで、基本的pywinautoを使用して複数のファイルをインクリメントする方法

これはとして保存したテキスト1

です:ようにFILE2.TXT

そして:FILE1.TXT

これはとして保存したテキスト2

です。私はメモ帳プログラムでこれを行うスクリプトを手に入れましたが、すべてのファイルに対してメモ帳を開かなくてもこれを行う方法はわかりません。 私はプロセスIDなどに接続しようとしたことがありましたが、私はプログラミングにわずか1ヶ月しかないので、このコンセプトにはひどい時間があります。

#!/usr/bin/env python 

from pywinauto.application import Application 
b = int(raw_input("Where do you want to start? >")) 
a = int(raw_input("How Many Labels do you need? >")) 

def make_labels(a, b): 

    app = Application().start("notepad.exe") 
    app.UntitledNotepad.edit1.SetText("This is me typing %r" % b) 
    app.UntitledNotepad.MenuSelect("File -> SaveAs") 
    #app.SaveAs.ComboBox5.Select("UTF-8") 
    app.SaveAs.edit1.SetText("Test_File%r.txt" % b) 
    app.SaveAs.Save.Click() 
    app.UntitledNotepad.TypeKeys("%FX") 
    b = b + 1 
    return b 



while b < a: 
    b = make_labels(a, b) 

すべてこれが唯一のメモ帳の1つのインスタンスを使用して動作するように取得する方法を考え出すの任意の助けいただければ幸いです。

更新:

わかりましたので、私は考えて少し進歩を遂げてきました。私はあなたがプログラム名でそれを識別できることを知りませんでしたので、私はそれを変更しました。そして今は同じウィンドウを使用しています。

#!/usr/bin/env python 

from pywinauto.application import Application 
import time 

b = int(raw_input("Where do you want to start? >")) 
a = int(raw_input("How Many Labels do you need? >")) 
app = Application().start("notepad.exe") 

def make_labels(b, app): 

    #app = Application().start("notepad.exe") 
    app.Notepad.edit1.SetText("This is me typing %r" % b) 
    app.Notepad.MenuSelect("File -> SaveAs") 
    app.SaveAs.edit1.SetText("Test_File%r.txt" % b) 
    app.SaveAs.Save.Click() 

    #app.Notepad.TypeKeys("%FX") 
    b = b + 1 
    return b 



while b < a: 
    b = make_labels(b, app) 
+0

「ファイルからデータを読み込み、新しい名前のファイルを作成し、その中に情報を書き込むにはどうすればよいですか?」、[ファイルの読み書き](https://docs.python。 org/2/tutorial/input出力。html#読み書きファイル)、[Pythonでファイルを読み書きする](http://www.pythonforbeginners.com/files/reading-and-writing-files-in-python)、[PythonファイルI/O](https://www.tutorialspoint.com/python/python_files_io.htm) – Kevin

+0

いいえ私はそれを持っています(主に)私はちょうどテキストを少し変更する必要があります+1)し、保存ファイルのタイトルに同じ操作を行います。私はそれらの部品を持っているし、スクリプトはその効果に動作しますが、現在、それは変更するたびに新しいメモ帳のインスタンスを開きます。メモ帳の同じインスタンスを使用したいが、インスタンス名が保存されたファイルの名前に変わるので、そのインスタンスに接続する方法を理解できない。 – Elka

答えて

0

いいえ!

私は私の問題を解決する別の方法を考え出しました。代わりに、人は自分のマウスでクリックされたかのようにメニュー選択オプションを使用しての私の代わりに、すべてのキーボードショートカットの方法を試してみました、それが働いた:

#!/usr/bin/env python 

from pywinauto.application import Application 
import time 

b = int(raw_input("Where do you want to start? >")) 
a = int(raw_input("How Many Labels do you need? >")) 
app = Application().start("notepad.exe") 

def make_labels(b, app): 

    #app = Application().start("notepad.exe") 
    app.Notepad.edit1.SetText("This is me typing %r" % b) 
    app.Notepad.TypeKeys("^S") 
    app.SaveAs.edit1.SetText("Test_File%r.txt" % b) 
    app.SaveAs.Save.Click() 

    #app.Notepad.TypeKeys("%FX") 
    b = b + 1 
    return b 



while b < a: 
    b = make_labels(b, app) 
    app.Notepad.TypeKeys("^N") 

これは、ファイルを保存し、新しいを開くには、キーボード入力を使用しています(同じアプリケーションインスタンスの下に)ファイルを作成し、プロセスを繰り返します。

これは将来他の人に役立つことを願っています。

0

二回ライン

app.SaveAs.Save.Click() 
を書く:しかし、私の新しい問題は、しかし、それはその後の保存オプションを開くために失敗することは、それは1秒の時間で内容をインクリメントポイントを取得するということです

#!/usr/bin/env python 

from pywinauto.application import Application 
b = int(raw_input("Where do you want to start? >")) 
a = int(raw_input("How Many Labels do you need? >")) 

def make_labels(a, b): 

    app = Application().start("notepad.exe") 
    app.UntitledNotepad.edit1.SetText("This is me typing %r" % b) 
    app.UntitledNotepad.MenuSelect("File -> SaveAs") 
    #app.SaveAs.ComboBox5.Select("UTF-8") 
    app.SaveAs.edit1.SetText("Test_File%r.txt" % b) 
    app.SaveAs.Save.Click() 
    app.SaveAs.Save.Click() 
    app.UntitledNotepad.TypeKeys("%FX") 
    b = b + 1 
    return b 

while b < a: 
    b = make_labels(a, b) 

は、その後、あなたの関数の引数「」無用ですmake_labels問題を解決するようです。

+0

ええ、私は、あまりにも関数で役に立たないことに気づいた。それは私からの最初のビットを理解しようとしている放置された残ったものでしたが、それを指摘してくれてありがとう。私は、スクリプトのウィンドウを特定することはできませんでしたが、元の投稿の更新で詳しく説明した新しい問題があるようです。 – Elka

0

メモ帳のウィンドウを実際に表示したい場合や、何らかの方法でファイルを書きたいと思っているのかどうかはわかりません。後者の場合は、複数のファイルを保存するためにpywinautoは必要ありません。 openwriteはうまく動作します。

b = int(raw_input("Where do you want to start? > ")) 
a = int(raw_input("How Many Labels do you need? >")) 
for x in range(b, b+a): 
    with open("Test_file{}.txt".format(x), "w") as file: 
     file.write("This is me typing {}".format(x)) 
+0

ええ、申し訳ありませんが、これは、これらの動きを経験するためには、(やや目立たない)別のプログラムを取得するためのパイロットであると述べていたはずです。私はメニューを選択してナビゲーションをほとんどダウンさせていますが、プロセスのロジックが私を得るものです。 – Elka

関連する問題