[Python] Hilo general

Alberteban

#359 Solo tengo Python 3.5 instalado, y el comando que me dices me da syntax error.

A ver si estoy yo haciendo algo mal, yo estoy ejecutando los comandos desde python.exe o desde la cmd de windows, ¿por qué no me van los comandos?

1 respuesta
HeXaN

Me cago en la puta, avisa de que estás en Windows xD

cabron

3
Alberteban

xDD entonces no me funcionan esos comandos porque no son para Windows? Porque todo lo que me encuentro por Google para instalar packages no me funciona nada xD

B

yo creo que para que esos comandos los leyera windows y poder hacer las cosas habia que poner en la consola algo de path python no?

Alberteban

Bueno ya lo he averiguado, resulta que esos comandos los tengo que usar desde la cmd y no desde python, me estaba volviendo loco ya xD

Vashealer

19
sPNkKkKkKkKk

Joder menudo epic!!

B

#361 Bueno, which es un comando de Linux. Básicamente lo que hace which $comando es decirte el path completo de lo que estás ejecutano al usar ese comando. En el caso de python, which python te devolvería algo del estilo /usr/bin/python o similar.

En Windows creo que lo más similar que se me ocurre es hacer echo %PATH% y buscar el path que sepas que contiene el ejecutable en cuestión...

ciza

Alguno ha tenido alguna vez que exportar datos a pdf?
Por ejemplo, de un dataframe de pandas a pdf. Estuve mirando esta web de momento: http://pbpython.com/pdf-reports.html

1
12 días después
HeXaN

Why Python Is Not My Favorite Language.

https://zenhack.net/2016/12/25/why-python-is-not-my-favorite-language.html

1 respuesta
Vashealer

#371 respecto al punto 1 está claro que no permite la encapsulación total, pero para algo están el @property decorator que permite setters y getters o el definir una variable con underscore.

Si al final quieres modificar algo, python te lo deja hacer, pero eso ya depende de ti. Te da una serie de herramientas para intentar encapsular partes de una clase.

En cuanto al duck typing no estoy del todo de acuerdo, permite el polimorfismo sin necesidad de herencia. Si el que lo utiliza es un duck, entonces la cosa cambia...

1 respuesta
HeXaN

#372 Yo en lo de la encapsulación estoy de acuerdo con el artículo. El resto de cosas que cita no me parecen necesariamente malas y las veo más un "miedo" de alguien que viene de JAVA o C.

29 días después
Lolerpopler

Resucito esto para ver si hay algun entendido en automated testing por aqui.
Estoy haciendo unos tests en los que necesito logearme en diferentes webs (googledrive, onedrive, dropbox....) Uso python3.5, con pytest y selenium webdriver.
Para crear el driver he probado con Chrome, el cual funciona con todas mis situacion pero en un par me suelta 7 de cada 10 veces un "conexion ended remotely de forma inesperada". Con Firefox esto no me pasa y todos van bien, menos en el caso de onedrive.

En onedrive sucede lo siguiente
-arranca el navegador
-introduce usuario y pulsa siguiente
-carga la pagina en la que se introduce la contraseña
-element not visible error, pero el elemento es visible.

Analizando el codigo veo que en esa situacion las esperas las ignora completamente (incluso intente poner unas esperas implicitas para ver), se salta la espera e intenta escribir en un elemento que aun no se ha cargado -> element not found.

Os dejo aqui el codigo para ver si podeis arrojar algo de luz. El error salta en la siguiente linea

password.send_keys(psw)
Codigo que da error

Aqui os pongo otro codigo equivalente de un test que funciona sin problemas

Codigo que funciona

A ver si alguien me peude sugerir alguna idea, o es que estoy ignorando algo obvio :psyduck: :psyduck:

17 días después
HeXaN

Los de Curse (si habéis jugado al WoW la conoceréis) están contratando: https://www.curseinc.com/careers/493581

1 mes después
bazoo

Humble Book Bundle: Python

Algunos de los libros son gratuitos online, pero bueno ahí queda eso. Venga, hasta otra.

sys.exit()
1 1 respuesta
B

#376 Pero si lo que merece la pena es la documentación oficial únicamente.

Si no está OODH, no vale.

HeXaN

Os dejo un Git con muchos problemas "básicos" que se deberían saber resolver: https://github.com/donnemartin/interactive-coding-challenges

3
11 días después
HeXaN

Redes neuronales creadas en Python jugando a GTA V.

[media]https://www.youtube.com/playlist?list=PLQVvvaa0QuDeETZEOy4VdocT7TOjfSA8a[/media]

3
23 días después
Deoxys

A ver si me podéis echar una mano con esta chorrada suprema que no sé cómo solucionar.

Suponed que tenéis un fichero que contiene "1, 2, 3, 4". Queréis cambiar, 1 por 2, 2 por 3, 3 por 4 y 4 por 1.

Los replaces consecutivos no funcionan por razones obvias, randomizar el orden de los replaces solo empeora las cosas, y que yo sepa a .replace no puedes pasarle una lista o un diccionario diciendo "Reemplaza todo esto a la vez".

¿Se os ocurre algo que no use regex?

(EDit: En este caso sí que podríais generar otra lista de números y hacer un ", ".join(). Asumid que la estrucutra del fichero es más complicada, las cosas a reemplazar no son números y no podéis hacer cosas de esas).

1 respuesta
Lolerpopler

#380 puedes hacer

for item in list
    value = copy.deepcopy(item)
    value = value + 1
    item = value 

no había leído el edit. no puedes hacer

 copia = lista[1:]
copia.append(lista[0])

?

1 respuesta
Deoxys

#381 El problema es que los números son un ejemplo, en realidad son cadenas de texto arbitrarias.

Se me acaba de encender la bombilla por cierto, resulta que vale con sustituir sólo la última ocurrencia de la cadena en lugar de todas. Así el cambio 1->2 se aplica al 1, el cambio 2->3 se aplica al 2 (Y no al 1 cambiado a 2), etc. El replace de python te deja elegir las primeras n ocurrencias de algo, así que puedes darle la vuelta a todo y elegir una ocurrencia para cambiar la última:

status=status[::-1].replace(chores[i][::-1],newchores[i][::-1],1)[::-1]

Problem solved :D

s4suk3

alguien trabaja con django?

2 respuestas
hache_

#383

Yo he hecho alguna cosa con django y ahora estoy con un API Rest con django + djangorest-framework, la verdad es que me gusta bastante, lo único que no me mola, como casi cualquier framework, es que cuando te quieres salir del tiesto se complican las cosas bastante xD.

Vashealer

#383 mucha gente ;)

0n1x

Estoy empezando a programar con Python (jamás he programado en mi vida) y estoy intentando resolver problemas sencillos. Estoy tratando un fichero csv, que posee una serie de columnas con valores (12 columnas o campos). Uno de ellos es numérico. Con la ayuda de for estoy intentando pasar por todas las líneas de esa columna para comprobar valores que tengan 0 y también para calcular el máximo y el mínimo de dicha columna. Estoy haciendo lo siguiente pero algo estaré haciendo mal. Si me podéis echar un cable os lo agradecería.
PD: este es el ejemplo para intentar conocer cuántos son nulos.

4 respuestas
hache_

#386
Te lo corrijo un poquillo:

def leer_archivo(nombre_archivo):
    nulos = 0
    with open (nombre_archivo, "r") as f:
    	 header = f.readline()
    	 for line in f:
	     line = line.split(";") # Esto tiene que estar indentado, no lo pilla bien el code :_
	     if line[12] == "0": # Idem
	     	nulos += 1 #Idem

El statement with es recomendado para trabajar con flujos, ya que estás empezando no te voy a soltar la chapa teórica del porqué, pero vamos, es lo recomendado xD. Simplemente lo que haces es cargar el contenido del archivo en f, luego en la siguiente linea almacenamos la cabecera por si hiciese falta en el futuro para algo o sino, pues simplemente f.readline() sin asignar el contenido en ningún lugar. Finalmente lo que se hace es recorrer linea a linea el archivo, splitearlas en un array y acceder al campo en cuestión, donde, si el valor es 0 sumaremos uno a nulos, en caso contrario no necesitas poner el else y reasignarle el valor.

Hice esto al vuelo sin testear, pero vamos, sin comentar el error concreto que te da tu código me imagino que es por el == 0, ya que el valor en la variable es un string y estás comparandolo con un entero. Espero haberte ayudado.

Un saludo.

1 respuesta
0n1x

#387 Te agradezco la respuesta. No obstante, la verdad que no he entendido la mitad de las cosas. Solo he tenido 9 días de clase de Python desde cero (sin saber apenas el concepto de programación) y ni sabía que existía el with - as. Aunque sí creo que has dado con el problema que tengo en mi código y es que estoy intentando igualar un string con un entero (0).

Ahora mi duda es la siguiente, ¿cómo puedo recorrer los valores numéricos de esa columna? es decir, ahora entiendo el problema pero a la hora de traducirlo a código me bloqueo. ¿Cuando establezco MunicipiosNulos == NulosLineas[12], no estoy asociando a esa variable la columna nº13 (que en este caso tiene más de 8000 registros numéricos)?

1 respuesta
hache_

#388

Cuando haces el open y luego el readlines estás almacenando las lineas en una lista, luego puedes recorrer linea a linea con un for, y tendŕas una linea a la que harás el split y cada columna se almacenará en el array, por lo que si haces line[12] estás accediendo al valor de la posición 13 en esa linea, no a todos los valores de esa columna en todas las linas, es decir, tratarás un valor, no los 8000 de golpe. Para convertir el valor del csv a número solo necesitas hacer un int o float del mismo, del tipo int(linea[12])

Un saludo.

1 respuesta
pconki

#386 hola, acabo de leerlo y veo que ya te han respondido pero, ya que estás empezando, un pequeño consejo: por convención, los nombres de funciones y de variables deben empezar por letra minúscula. Parece una tontería pero hace más fácil la lectura del código una vez te acostumbras :)

1 respuesta

Usuarios habituales