Récupérer les données d'un fichier txt après l'input
Utilisateur anonyme -
Bonjour, à tous je veux récupérer les données dans un fichier txt à partir d'un input pour les utilisés ensuite.
Je m'explique, je voudrais récupérer les valeurs de coordonnées x et y de mon fichier txt avec la fonction input
mon fichier suivant le lien: https://drive.google.com/file/d/1-hAsughOfG8juqCgvii8PzTDayFR3xe4/view?usp=sharing
D'avance merci!
voila mon code
import matplotlib.pyplot
import csv
def equdroite(x0, y0, x1, y1):
a = y1 - y0
b = x0 - x1
c = -(b * y0 + a * x0)
# print("verif00:",sign(x0,y0,a,b,c),sign(x1,y1,a,b,c))
return a, b, c
def inside(Poly, p):
for P in Poly:
a, b, c, s, x, y = P[0], P[1], P[2], P[3], pp[0], pp[1]
if s * sign(x, y, a, b, c) < 0:
# print("outside:",a,b,c,s,x,y)
return False
return True
def sign(x, y, a, b, c):
return a * x + b * y + c
# Les 4 coordonnées sources
from tkinter import filedialog
def prompt_filename():
return filedialog.askopenfilename(
initialdir="/", title="Sélectionner le fichier source",
filetypes=(
("Fichier texte", "*.txt"),
("Fichier csv", "*.csv")
)
)
def read_coords(f_coordsource):
coordsource = list()
for line in f_coordsource:
print(line.strip())
# ...
return coordsource
filename_coords = prompt_filename()
with open(filename_coords, "r") as f_coords:
(x, y) = coords = read_coords(f_coords)
...
# x = 325010, 325015, 325015, 325010
# y = 2077560, 2077560, 2077555, 2077555
# L'emprise du projet
A = [324989.345, 324987.133, 324987.502, 325037.452, 325035.977, 324989.345]
B = [2077586.246, 2077553.622, 2077537.955, 2077537.402, 2077589.933, 2077586.246]
# A = [324989.345, 324987.133, 324980, 325037.452, 325035.977, 324989.345]
# B = [2077586.246, 2077553.622, 2077800, 2077537.402, 2077589.933, 2077586.246]
# avgA,avgB=sum(A)/len(A),sum(B)/len(B)
# # print ("avg:",avgA,avgB)
# A=[x-avgA for x in A]
# B=[x-avgB for x in B]
# x=[x-avgA for x in x]
# y=[x-avgB for x in y]
sg = 5
nc = len(A) - 1
E = []
for p0 in range(nc):
p1 = (p0 + 1) % nc
p2 = (p0 + int(nc / 2)) % nc
a, b, c = equdroite(A[p0], B[p0], A[p1], B[p1])
s = sign(A[p2], B[p2], a, b, c)
# print("inloop:",p0,a,b,c,s)
E.append([a, b, c, s, p0, p1])
# print("E:",E)
for p in range(nc):
for C in E:
if p != C[4] and p != C[5]:
a, b, c, s, xp, yp = C[0], C[1], C[2], C[3], A[p], B[p]
v = sign(xp, yp, a, b, c)
if s * v < 0:
# print("outside:",a,b,c,s,xp,yp)
print("OUPS!", s, v)
matplotlib.pyplot.plot(A, B)
matplotlib.pyplot.scatter(x, y, color="r")
matplotlib.pyplot.axis("equal")
matplotlib.pyplot.grid()
phg = (int(min(A) / sg) * sg, int(min(B) / sg) * sg)
pbd = (int(max(A) / sg + 1) * sg, int(max(B) / sg + 1) * sg)
nrow = int((pbd[0] - phg[0]) / sg) + 1
ncol = int((pbd[1] - phg[1]) / sg) + 1
# print(phg)
# print(nrow,ncol)
prouge = []
for row in range(nrow):
for col in range(ncol):
pp = (phg[0] + sg * row, phg[1] + sg * col)
if inside(E, pp):
prouge.append(pp)
xrouge = [ppp[0] for ppp in prouge]
yrouge = [ppp[1] for ppp in prouge]
matplotlib.pyplot.scatter(xrouge, yrouge, color="g")
matplotlib.pyplot.scatter(x, y, color="r")
data = A, B
with open('coordout.csv', 'a', newline="") as f:
writer = csv.writer(f)
writer.writerows(data)
with open("coordout.csv", "a") as f:
print("X;Y", file=f)
for xrouge, yrouge in prouge:
print(f"{xrouge};{yrouge}", file=f)
matplotlib.pyplot.show()
- Récupérer les données d'un fichier txt après l'input
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
4 réponses
Bonjour
poster ton code c'est très bien, poster disons uniquement la partie du code concernée par la question serait mieux.
En effet, si le lecteur perd trop de temps à chercher cette partie, il pourrait laisser tomber et passer à autre chose.
Par exemple, je me suis arrêté 2 minutes sur la première fonction (qui n'a rien à voir avec ta question), mais le fait que le code ne corresponde pas avec son nom m'a interpellé et donc je suis passé à "mais pourquoi appeler une fonction equadroite => j'imagine équation de la droite, et la faire calculer autre chose, qui d'ailleurs n'a pas de sens évident ?"
Bref, tu m'as perdu dès le début de la lecture de ton code. Et il a fallu que je me "fasse violence" pour revenir à ta question.
Et donc pour y répondre, tape "lire fichier texte python" dans ton moteur de recherche préféré et tu trouveras pleins d'exemples.
Bonsoir merci pour vos conseil; enfaite je voudrais pas juste lire le fichier txt ,je veux faire un return et récupérer les valeurs contenues dans cet fichier pour les utiliser dans une autre variable.
Voici les valeurs contenues dans le txt:
2077560,325010
2077560,325015
2077555,325015
2077555,325010
voici le code concerné
from tkinter import filedialog
def prompt_filename():
return filedialog.askopenfilename(
initialdir="/", title="Sélectionner le fichier source",
filetypes=(
("Fichier texte", "*.txt"),
("Fichier csv", "*.csv")
)
)
def read_coords(f_coordsource):
coordsource = list()
for line in f_coordsource:
print(line.strip())
# ...
return coordsource
filename_coords = prompt_filename()
with open(filename_coords, "r") as f_coords:
(x, y) = coords = read_coords(f_coords)