The Toronto Blue Jays selected Lopes in the seventh round of the 2011 MLB draft.[5] He split the 2012 season between the Bluefield Blue Jays and the Vancouver Canadians, hitting a combined .278/.339/.462 with four home runs and 33 RBI. He played for the Lansing Lugnuts in 2013, hitting .245/.308/.336 with five home runs and 66 RBI. He spent the 2014 season with the Dunedin Blue Jays, hitting .243/.329/.350 with 3 home runs and 33 RBI. He split the 2015 season between Dunedin and the New Hampshire Fisher Cats, hitting a combined .260/.339/.325 with two home runs and 38 RBI. In 2016, he again split the season between Dunedin and New Hampshire, hitting .283/.353/.402 with six home runs and 56 RBI.[6] In 2017, he split the season between the GCL Blue Jays, Dunedin, and the Buffalo Bisons of the Triple–AInternational League,[7] hitting a combined .269/.357/.421 with seven home runs and 46 RBI. Lopes elected free agency following the season on November 6, 2017.[8]
On December 4, 2017, Lopes signed a minor league contract with the Texas Rangers.[9] He played for the Round Rock Express of the Triple–A Pacific Coast League in 2018, hitting .261/.365/.408 with 12 home runs and 52 RBI.[4] He split the 2019 season between the Double–A Frisco RoughRiders and the Triple–A Nashville Sounds,[10] hitting a combined .265/.356/.422 with 13 home runs and 65 RBI. He became a free agent following the 2019 season.[11]
On December 18, 2019, Lopes signed a minor league contract with the Miami Marlins.[12] Lopes did not play in a game in 2020 due to the cancellation of the minor league season because of the COVID-19 pandemic.[13] He was released by the team on September 1, 2020.
On October 14, 2020, Lopes signed a minor league deal with the Arizona Diamondbacks. Lopes spent the 2021 season with the Triple-A Reno Aces. Lopes played in 66 games, hitting .271 with nine home runs and 34 RBI. He became a free agent following the 2021 season.
On March 11, 2022, Lopes signed a minor league contract with the Oakland Athletics.[14] He began the season with the Las Vegas Aviators. On April 18, Lopes was added to the Athletics roster as a COVID-19 related substitute.[15] He made his MLB debut on April 20. Lopes went hitless in nine at-bats with a walk for Oakland before he was removed from the 40-man roster and returned to Triple-A on April 27.[16] He was released by the Athletics organization on August 2.