2016-04-11 38 views
-1

基本的にはコードが実行されますが、正しく実行されません。私は何が間違っていたのか分かりません。ここにコードがあります。私がシェルに何かを入力すると、それを無視するだけです。どのように私はそれを修正するだろうか?私は本当にif "___name__ == '_main_':関数を使用したことがありませんでしたので、その前になぜですか?Pythonコードが実行されますが実行されません

import os.path 
import os 
import shutil 

def search_files(direct): 
    directory=os.path.join(direct) 
    directory1=os.path.exists(directory) 
    if directory1: 
     return directory 
    else: 
     print ('ERROR') 
     direct = input() 

def search_characteristics(direct): 
    interesting = input() 
    space = interesting.count(' ') 
    list1 = [] 
    list2 = [] 
    list3 = [] 
    directory = os.path.join(direct) 
    files = nested_dir(directory) 
    directory1=os.path.exists(directory) 
    keyword = interesting[space + 1:len(interesting) + 1] 

    if interesting[0] == 'N': 
     for item in files: 
      if item[item.rfind('\\')+1:item.rfind('.')] == interesting[space+1:len(interesting)+1]: 
       list3.append(tem) 
       return list3 

    elif interesting[0] == 'E' : 
     for item in files: 
      if item[item.rfind('.')+1:len(item)+ 1] == ((interesting[space:len(interesting)+1]).strip('')).strip('.'): 
       list2.append(item) 
       return list2 

    elif interesting[0] == 'S' : 
     for item in files: 
      if int(keyword) <os.path.getsize(item): 
       list1.append(item) 
       return list1 
      else: 
       print('ERROR') 

def directory_files(nested_directory) -> list: 
    file_list = [] 
    for element in os.listdirectory(nested_directory): 
     path = os.path.join(nested_directory,element) 

     if os.path.isdir(path): 
      file_list.extend(nested_directory(path)) 
     else: 
      file_list.append(path) 

    return file_list 

def path(interesting_files): 
    for files in interesting_files: 
     print(files) 

def read_file(interesting_files): 
    for files in interesting_files: 
     infile=file 
     open_file=open(infile) 

    for line in open_file.readlines(): 
     print(line) 
     open_file.close() 

def duplicate(interesting_files): 
    for files in interesting_files: 
     shutil.copy(files,files+'.dup') 

def modify(interesting_files): 
    for files in interesting_files: 
     os.utime(files,(1330712280, 1330712292)) 

if __name__ == '_main_': 
    while True: 
     file_input = input("Enter file name") 
     if file_input.lower() == 'p': 
      path(operation) 
     elif file_input.lower() == 'f': 
      read_file(operation) 
     elif file_input.lower() == 'd': 
      duplicate(operation) 
     elif file_input.lower() == 't': 
      modify(operation) 
     else: 
      print('ERROR') 

    direct = input() 
    search_files(direct) 
    operation = search_characteristics(direct) 
    print(operation) 
    operations(operation) 
+1

実行中の最初のものとして真のループがあり、そのループを終了しません –

+0

あなたのコードはそのまま実行されるので、あなたは 'file_input = input()'行に固執して入力を待っていると思います。あなたが 'file_input = input("ファイル名を入力 ")すれば助けになるかもしれません。関数を呼び出す前に関数を定義する必要があります。 'if __name __ ==" __ main __ "'は一般にスクリプトの最後にあります。 –

+0

@PadraicCunnninghamそして入力を探し続ける。それは私のポイントでした –

答えて

-2

あなたはmain__name__の使用を求めている場合は、スクリプトを実行するために取得するための私の方法は以下の通りです:

#!/usr/bin/python 
def main(): 
    #your code 

if __name__ == "__main__": 
    main() 

私は通常mainを使用し、その後、mainのうち、私のすべての機能を保ちますコントローラとして。ターミナルで実行しようとしていて、.pyとして保存されていない場合は、shebangが先頭にあるか、またはスクリプト名の前にpythonと入力する必要があります。つまり、スクリプトがtest_scriptと呼び出された場合は、shebangがあり、./test_scriptまたはpython test_scriptのいずれかを行います。 .pyの拡張子がある場合は、python test_script.pyを試してください。これが少し助けてくれることを願っています。また、スクリプトの特権をchmodにしてください。私は通常それを実行する前にchmod 775 test_script.pyをやります。

+5

'main()'メソッドは不要です –

+0

@ cricket_007: '__main__'文字列が正しくないと思っています。それは非常に明確ではないので、それは非常に良い答えではありませんが、私は彼が 'main()'を使用する必要があることを暗示しようとしていたとは思いません。 – zondo

+0

フィードバックのおかげで、私は私の答えに詳細を入れました。 –

関連する問題