質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

582閲覧

python script上では実行できるのですがGUI又はコマンドプロンプトから起動できません

pythontarou

総合スコア7

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/04/26 08:32

編集2022/04/27 03:17

python script上では実行できるのですがデスクトップ上から起動できません。

また、一部だけ稼働しているためパスは通っていると思います。(ほかのpyファイルは実行出来たため)
for文の前と後はしっかり作動してくれています。

コマンドプロンプトで実行すると
New.xlsxの起動
print("start")
input("-------------finish----------------------------------------------")

この三つのみ起動します

ご教示お願い致します。

また、別件ですが、フォルダ内のエクセルの全シートを一か所にまとめたいのですが、シートを番号で指定しているため全シートでできず、名前から番号を取得しようとしたりいろいろ試みたのですが2週間ほど苦戦しておりますどなたかいい案はありますでしょうか。

以上、宜しくお願い致します。

python

1#以下コード 2 3import openpyxl 4import pandas as pd 5import seaborn as sns 6import datetime 7import glob 8import os 9import time 10import xlwings as xw 11names = xw.Book("C:\\Users\\太郎\\Desktop\\new\\New.xlsx") 12 13 14#時間 15 16riss = [] 17liss = [] 18deta = [] 19 20list = glob.glob('*.xlsx')#Excel抽出 21time.sleep(3) 22print("start") 23#繰り返し 24for file in list: 25 filer1 = xw.Book(os.path.abspath(file))#ファイルの絶対パス 26 time.sleep(2) 27 print("---------------------------------------------------------------") 28 print("ファイル名:",file)#ファイルの名前 29 riss.append(filer1)#リストに格納(不要) 30 wb = openpyxl.load_workbook(file)#ファイル読み込み 31 for ws in wb.worksheets: 32 create_title = ws.title + "_New" 33 # Nsheet = Neww.create_sheet(index=len(Neww.sheetnames), title=create_title) 34 print("シート名:",create_title) 35 filer1.sheets[0].copy(names.sheets[0]) 36 print("?") 37 names.save() 38 # filer1.close() 39 40 41 42 43input("-------------finish----------------------------------------------") 44 45 46

回答

Takai様

「python script上では実行」とはどのような操作ですか。

⇒デフォルトのpythonソフト(IDLE python3.10)のスクリプトからRunで実行できます

「GUI」でできないとはどのような操作をしたときですか。 「コマンドプロンプト」ではどこでどのようなコマンドを実施していますか。

⇒デスクトップ上で上記のpyファイルをダブルクリックして起動したときです。

pythonはインデントが無いと 読めないので、<code>ボタンを押してでてくる書式の中にコードを記述してください。
質問は編集できますので、回答は質問の編集でお願いします。

⇒修正しました。

問題はたあぶん「list = glob.glob('*.xlsx')」でリストが抽出されないためでしょう。xlsxのあるディレクトリ(フォルダ)で実行していますか?
⇒実行ファイルと同じフォルダ内にexcelファイルはあります。

ご回答宜しくお願い致します。


jbpb0様

pythonのコードの一番最初の行のすぐ上に python だけの行を追加してください また、pythonのコードの一番最後の行のすぐ下に だけの行を追加してください または、 https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif を見て、そのようにしてみてください 現状、コードがとても読み辛いです 質問にコードを載せる際に上記をやってくれたら、他人がコードを読みやすくなり、コードの実行による現象確認もやりやすくなるので、回答されやすくなります。

⇒URLまでありがとうございます。修正してみましたがいかがでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2022/04/26 08:55

「python script上では実行」とはどのような操作ですか。 「GUI」でできないとはどのような操作をしたときですか。 「コマンドプロンプト」ではどこでどのようなコマンドを実施していますか。 pythonはインデントが無いと 読めないので、<code>ボタンを押してでてくる書式の中にコードを記述してください。 質問は編集できますので、回答は質問の編集でお願いします。 問題はたあぶん「list = glob.glob('*.xlsx')」でリストが抽出されないためでしょう。xlsxのあるディレクトリ(フォルダ)で実行していますか?
jbpb0

2022/04/26 23:23

pythonのコードの一番最初の行のすぐ上に ```python だけの行を追加してください また、pythonのコードの一番最後の行のすぐ下に ``` だけの行を追加してください または、 https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif を見て、そのようにしてみてください 現状、コードがとても読み辛いです 質問にコードを載せる際に上記をやってくれたら、他人がコードを読みやすくなり、コードの実行による現象確認もやりやすくなるので、回答されやすくなります
pythontarou

2022/04/27 03:15

ありがとうございます。質問にて修正させて頂きました。宜しくお願い致します。
TakaiY

2022/04/27 07:12

「コマンドプロンプト」ではどこでどのようなコマンドを実施していますか。 の質問の回答も教えてください。
pythontarou

2022/04/27 07:52

TakaiY様 ご指摘頂きました「list = glob.glob('*.xlsx')」を絶対パスに変更したらできましたm(__)m カレントディレクトリの存在を知りませんでした。 色々ご教示頂き本当にありがとうございます。 カレントディレクトリに関して詳しく調べてみようと思います。
guest

回答1

0

ベストアンサー

pythonスクリプトの中で相対パスを使ったとき、そのパスの起点はカレントディレクトリです。カレントディレクトリは「スクリプトを実行した場所」であり、必ずしも「スクリプトが置いてある場所」にはなりません。

「デスクトップ上で上記のpyファイルをダブルクリック」で起動したときは、カレントディレクトリは異なる場所になります。
このためxlsxファイルが見つからないことになります。

コマンドプロンプトでスクリプトが置いてある場所に移動してからコマンドで実行すれば動くでしょう。

どうしても「デスクトップ上で上記のpyファイルをダブルクリック」で実行したいのであれば、パスを絶対パスにすればできます。
list = glob.glob('*.xlsx')
この部分です。

投稿2022/04/27 07:22

TakaiY

総合スコア12747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問