質問編集履歴
3
詳細なsample.pyコードを追加しました
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -16,7 +16,7 @@ 
     | 
|
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            ```
         
     | 
| 
       18 
18 
     | 
    
         
             
            #-------------------------------------------------------
         
     | 
| 
       19 
     | 
    
         
            -
            # フォルダの上の階層を検出する 
     | 
| 
      
 19 
     | 
    
         
            +
            # フォルダの上の階層を検出する  (pyPackの下層に保存してます)                                            |
         
     | 
| 
       20 
20 
     | 
    
         
             
            #-------------------------------------------------------
         
     | 
| 
       21 
21 
     | 
    
         
             
            def TargetPath(path,key):
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
         @@ -51,6 +51,80 @@ 
     | 
|
| 
       51 
51 
     | 
    
         
             
                            result = 'error'
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
                return result
         
     | 
| 
      
 54 
     | 
    
         
            +
            #-------------------------------------------------------
         
     | 
| 
      
 55 
     | 
    
         
            +
            # より詳細なsample.py                                                 |
         
     | 
| 
      
 56 
     | 
    
         
            +
            #-------------------------------------------------------
         
     | 
| 
      
 57 
     | 
    
         
            +
            import os
         
     | 
| 
      
 58 
     | 
    
         
            +
            import sys
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            # pyPackフォルダ(モジュール群)を読みにいっています
         
     | 
| 
      
 61 
     | 
    
         
            +
            sys.path.append(os.path.join(os.path.dirname(__file__), '../../../../pyCode'))
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            import pyPack
         
     | 
| 
      
 64 
     | 
    
         
            +
            import time
         
     | 
| 
      
 65 
     | 
    
         
            +
            import datetime
         
     | 
| 
      
 66 
     | 
    
         
            +
            import glob
         
     | 
| 
      
 67 
     | 
    
         
            +
            import shutil
         
     | 
| 
      
 68 
     | 
    
         
            +
            import subprocess
         
     | 
| 
      
 69 
     | 
    
         
            +
            import tkinter as tk
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            title = 'sample'
         
     | 
| 
      
 72 
     | 
    
         
            +
            scnd  = 2
         
     | 
| 
      
 73 
     | 
    
         
            +
            xLen  = 60
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            # モジュールを呼出してpopUpメニューを表示
         
     | 
| 
      
 76 
     | 
    
         
            +
            pyPack.modu.PopUp(scnd,'Start To '+title,250,70)
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            # モジュールを呼出してフルパスを取得する
         
     | 
| 
      
 79 
     | 
    
         
            +
            # Windowsの場合 C:/○○/pyBOO
         
     | 
| 
      
 80 
     | 
    
         
            +
            # linuxの場合   /home/ユーザー名/○○/pyBOO
         
     | 
| 
      
 81 
     | 
    
         
            +
            # ここが問題の絶対パスを作成するモジュールです
         
     | 
| 
      
 82 
     | 
    
         
            +
            rtDir = pyPack.modu2.TargetPath(os.getcwd(),'pyBOO')
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            # 現在のコードの在るパス
         
     | 
| 
      
 85 
     | 
    
         
            +
            here = rtDir +'/pyCode/cMarket/FX/USDJPY'
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            # モジュールを呼出して、処理結果を格納するパス(文字列のみ)の作成
         
     | 
| 
      
 88 
     | 
    
         
            +
            there = pyPack.modu2.IsThere(here)
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            # モジュールを呼出して、thereのフォルダを作成する
         
     | 
| 
      
 91 
     | 
    
         
            +
            pyPack.modu2.DirMaker(there)
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            # 何かしらの処理をして'there'に格納する
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            #---- モジュールを呼出し、osがWindowsの場合の処理
         
     | 
| 
      
 96 
     | 
    
         
            +
            if pyPack.modu2.HowOS(1) == 'windows':
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                # rtDir = C:/share/pyBOO
         
     | 
| 
      
 99 
     | 
    
         
            +
                print(rtDir)
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                # there = C:/share/pyBOO/pyData/dMarket/FX/USDJPY
         
     | 
| 
      
 102 
     | 
    
         
            +
                print(there)
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                # paramikoにてLinuxサーバーへファイル転送する処理
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            #---- モジュールを呼出し、osがLinuxの場合の処理
         
     | 
| 
      
 107 
     | 
    
         
            +
            elif pyPack.modu2.HowOS(1) == 'linux':
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                # rtDir = '/home/ユーザー名/share/pyBOO'
         
     | 
| 
      
 110 
     | 
    
         
            +
                print(rtDir)
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                # there = '/home/ユーザー名/share/pyBOO/pyData/dMarket/FX/USDJPY'
         
     | 
| 
      
 113 
     | 
    
         
            +
                print(there)
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                # smbClientにてLinuxサーバーへファイル転送する処理
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
            # Windowsは'python'   Linuxは'python3'と出力
         
     | 
| 
      
 118 
     | 
    
         
            +
            pyType = pyPack.modu2.HowOS(3)
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
            #---- 次のnext.pyの処理へ (ここがTerminalでエラーになる元凶です)
         
     | 
| 
      
 121 
     | 
    
         
            +
            #---- 絶対パスを指定すればTerminalでも実行できました
         
     | 
| 
      
 122 
     | 
    
         
            +
            nPath = here+'/subDir/next.py'
         
     | 
| 
      
 123 
     | 
    
         
            +
            subprocess.Popen([pyType,nPath])
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            # モジュールを呼出してpopUpメニューを表示
         
     | 
| 
      
 126 
     | 
    
         
            +
            print('\n[終了]',title,'\n')
         
     | 
| 
      
 127 
     | 
    
         
            +
            pyPack.modu.PopUp(scnd,title+' Closing',250,70)
         
     | 
| 
       54 
128 
     | 
    
         
             
            ```
         
     | 
| 
       55 
129 
     | 
    
         | 
| 
       56 
130 
     | 
    
         
             
            ### 試したこと・調べたこと
         
     | 
2
コードを追加しました
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -15,7 +15,42 @@ 
     | 
|
| 
       15 
15 
     | 
    
         
             
            ### 該当のソースコード
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            ```
         
     | 
| 
      
 18 
     | 
    
         
            +
            #-------------------------------------------------------
         
     | 
| 
      
 19 
     | 
    
         
            +
            # フォルダの上の階層を検出する                                              |
         
     | 
| 
      
 20 
     | 
    
         
            +
            #-------------------------------------------------------
         
     | 
| 
      
 21 
     | 
    
         
            +
            def TargetPath(path,key):
         
     | 
| 
      
 22 
     | 
    
         
            +
              
         
     | 
| 
      
 23 
     | 
    
         
            +
                cnt = 0
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
                try:
         
     | 
| 
      
 26 
     | 
    
         
            +
                    
         
     | 
| 
      
 27 
     | 
    
         
            +
                    int(key)
         
     | 
| 
      
 28 
     | 
    
         
            +
                    if key == 0:
         
     | 
| 
      
 29 
     | 
    
         
            +
                        path = os.path.basename(path)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    elif key > 0:
         
     | 
| 
      
 31 
     | 
    
         
            +
                        while cnt < key:
         
     | 
| 
      
 32 
     | 
    
         
            +
                            cnt+= 1
         
     | 
| 
      
 33 
     | 
    
         
            +
                            path = os.path.dirname(path)
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                    if path == '/':
         
     | 
| 
      
 36 
     | 
    
         
            +
                        result = 'error'
         
     | 
| 
      
 37 
     | 
    
         
            +
                    else:
         
     | 
| 
      
 38 
     | 
    
         
            +
                        result = path
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                except ValueError:
         
     | 
| 
      
 41 
     | 
    
         
            +
                    
         
     | 
| 
      
 42 
     | 
    
         
            +
                    while cnt < 15:
         
     | 
| 
      
 43 
     | 
    
         
            +
                        cnt+= 1
         
     | 
| 
      
 44 
     | 
    
         
            +
                        result = os.path.basename(path)
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                        if result == key:
         
     | 
| 
      
 47 
     | 
    
         
            +
                            result = path
         
     | 
| 
      
 48 
     | 
    
         
            +
                            break
         
     | 
| 
      
 49 
     | 
    
         
            +
                        else:
         
     | 
| 
      
 50 
     | 
    
         
            +
                            path = os.path.dirname(path)
         
     | 
| 
      
 51 
     | 
    
         
            +
                            result = 'error'
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                return result
         
     | 
| 
       19 
54 
     | 
    
         
             
            ```
         
     | 
| 
       20 
55 
     | 
    
         | 
| 
       21 
56 
     | 
    
         
             
            ### 試したこと・調べたこと
         
     | 
1
誤字があった
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -30,7 +30,7 @@ 
     | 
|
| 
       30 
30 
     | 
    
         
             
            $ python3 /home/test/samle.py
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
            と実行すとそのファイルのみ実行し、表示できますが、
         
     | 
| 
       33 
     | 
    
         
            -
            メ 
     | 
| 
      
 33 
     | 
    
         
            +
            メニュー画面をtkinterで作成して次のファイルを実行すると
         
     | 
| 
       34 
34 
     | 
    
         
             
            python3: can't open file '/home/test/next.py: [Errno 2] No such file or directory
         
     | 
| 
       35 
35 
     | 
    
         
             
            となります。
         
     | 
| 
       36 
36 
     | 
    
         |