簡體   English   中英

如何在Python中使用參數創建文件?

[英]How to create a file using parameters in Python?

我當前正在創建文件傳輸客戶端服務器。 我需要做的是使客戶端使用參數創建文件(如果我沒記錯的話,這和參數是一樣的事情)。 所以,我想要的是跑步

python server.py

接着

python client.py file.txt

這是服務器代碼:

# -*- coding: utf-8 -*-
import socket
from threading import Thread

class threaded_server(Thread):
    def __init__(self,ip,port,sock):
        Thread.__init__(self)
        self.ip = ip
        self.port = port
        self.sock = sock
        print " Nova conexão de "+ip+":"+str(port)

    # rodando a thread, leitura da mensagem
    def run(self):
        arquivo = open('entrada.txt','rb')
        while True:
            temp = arquivo.read(msg)
            while (temp):
                self.sock.send(temp)
                temp = arquivo.read(msg)
            if not temp:
                self.sock.close()
                break

host = socket.gethostname()
port = 5001
msg = 1024

# não funcionou na declaração _def_init
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((host, porta))
threads = []

# servidor fica aguardando novas conexoes
while True:
    sock.listen(4)
    print "Aguardando..."
    (conn, (ip,port)) = sock.accept()
    print 'Conexão de: ', (ip,port)
    newthread = threaded_server(ip,port,conn)
    newthread.start()
    threads.append(newthread)

for t in threads:
    t.join()

這是客戶端代碼:

# -*- coding: utf-8 -*-
import socket

host = socket.gethostname ()
port = 5001
msg = 2048

tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
destino = (host, porta)
tcp.connect(destino)
with open('saida.txt', 'wb') as arquivo:
    print 'Arquivo aberto'
    while True:
        dados = tcp.recv(msg)
        if not dados:
            arquivo.close()
            break
        arquivo.write(dados)

tcp.close()
print('Fim da Conexão')

我正在尋找的是讓客戶端創建將發送到服務器的文件。

對不起,葡萄牙語中的代碼。 如果有人需要更多說明,請問。

您可以使用sys.argv訪問命令行參數,這是傳遞給腳本的參數列表。 這是一個例子:

import sys
print(sys.argv)

將其保存到test.py然后使用以下命令行執行該程序:

# python test.py file.txt
['test.py', 'file.txt']

第一個腳本參數是python腳本本身的名稱。 第二個是第一個參數。 您可以在client.py腳本中使用它來設置輸出文件名:

import sys

if len(sys.argv) < 2:
    print('Usage: {} output_filename'.format(sys.argv[0]), file=sys.stderr)
    sys.exit(1)

output_filename = sys.argv[1]
with open(output_filename, 'wb') as arquivo:
    ...

sys.argv的長度用於確保至少存在兩個參數。 第一個是腳本名稱,第二個是輸出文件名。 任何其他參數都將被忽略。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM