在Python

时间:2017-03-30 09:56:53

标签: python subprocess

有人可以检查下面的代码,因为我在python中使用while和If语句并再调用一个python代码,但它正在执行除调用其他python代码之外的所有代码。

import os
import psycopg2
import os.path
import subprocess
import sys

if os.path.isfile("Z:\\xyz\\New.xlsx"):
    while True:
        conn = psycopg2.connect(database="gp_bdl", user="adwed1", password="***", host="bdlgp12", port="6200")
        cur = conn.cursor()
        print ("Opened database successfully")    
        try:
            cur.execute('''select function1();''')
            conn.commit()
            conn.close()

        except psycopg2.OperationalError:
            continue
        break;
        if os.path.isfile("Z:\\xyz\\second.xlsx"):
         print("Next has started")
         subprocess.call([sys.executable,'Next Python.py'])
    else:
         print("Nothing")
else:
   print("No Process")*

4 个答案:

答案 0 :(得分:2)

break语句之后的所有内容都是死代码。如果您的try引发错误,continue语句将开始一个新的迭代(与pass不同,这只会保持流量从该点开始)。

但如果它没有引发异常,那么您就会突破while,因此您的第一个if无法访问。

答案 1 :(得分:0)

import os
import psycopg2
import os.path
import subprocess
import sys

if os.path.isfile("Z:\\xyz\\New.xlsx"):
    while True:
        conn = psycopg2.connect(database="gp_bdl", user="adwed1", password="***", host="bdlgp12", port="6200")
        cur = conn.cursor()
        print ("Opened database successfully")    
        try:
            cur.execute('''select function1();''')
            conn.commit()
            conn.close()

        except psycopg2.OperationalError:
            continue

        if os.path.isfile("Z:\\xyz\\second.xlsx"):
            print("Next has started")
            subprocess.call([sys.executable,'Next Python.py'])
        else:
            print("Nothing")

        break
else:
    print("No Process")*
像我的评论一样,它需要看起来像这样,循环中的break语句的所有内容都不会被执行。

答案 2 :(得分:0)

必须将“break”发送到另一个位置(在例外分支中)。否则代码部分:

if os.path.isfile("Z:\\xyz\\second.xlsx"):
    print("Next has started")
    subprocess.call([sys.executable,'Next Python.py'])

将永远不会执行,因此您的其他文件未加载。

答案 3 :(得分:0)

为什么你的代码不起作用?回答:

  • 打破整个循环,删除它!
  • 将“continue”替换为“pass”
  • 删除“print(”No Process“)*”
  • 中的那个小*
  • Python中没有分号!

固定代码:

import os
import psycopg2
import os.path
import subprocess
import sys

if os.path.isfile("Z:\\xyz\\New.xlsx"):
    while True:
        conn = psycopg2.connect(database="gp_bdl", user="adwed1",password="***", host="bdlgp12", port="6200")
        cur = conn.cursor()
        print ("Opened database successfully")    
        try:
            cur.execute('''select function1();''')
            conn.commit()
            conn.close()

        except psycopg2.OperationalError:
            continue
        break
        if os.path.isfile("Z:\\xyz\\second.xlsx"):
            print("Next has started")
            subprocess.call([sys.executable,'Next Python.py'])
    else:
         print("Nothing")
else:
   print("No Process")